@docx-editor.dev/react 2.26.0 → 2.28.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.
package/dist/index.d.ts CHANGED
@@ -1,7 +1,17 @@
1
+ /**
2
+ * @docx-editor.dev/react
3
+ *
4
+ * React adapter for the DOCX editor. A thin renderer over the `Editor`
5
+ * contract from `@docx-editor.dev/core`: it supplies DOM and paints
6
+ * the engine's positioned display list, and holds no editing-engine state.
7
+ *
8
+ * @packageDocumentation
9
+ * @public
10
+ */
1
11
  import * as react from 'react';
2
12
  import react__default, { ReactNode, CSSProperties, ReactElement, ComponentType, ForwardRefExoticComponent, RefAttributes, HTMLAttributes, Ref } from 'react';
3
- import { ChromeExportFormat, InvalidTextFormFieldSession, ContentControlWidgetSession, CalendarMonth, ContentControlListNavigation, CalendarDay, TextFormFieldDialogSession, RevisionAuthorStyle, ParagraphDialogFields, ParagraphDialogMixed, ChromeMenuId, ChromeSlotId, ChromeMenuEntry, DocxEditorInstance, FontConfigurationFragment, FontResolver, EditorModule, ImageDecodePort, SupportedImageMime, TableChromeSlotId, ChromeExportHandlers, DocumentSearchHighlight, DocumentSearchFindOptions, SurfaceHyperlink, FontOrigin, MarkedFontResolver, ReviewAuthorInfo, EditorCommandExecute, ToolbarValueMap, HighlightSource, ParagraphFormatRead, ParagraphFormatUpdate, TextMeasurer, PaginatedSurfaceState, NavigationCommand, SurfaceFormatting, SectionProperties, RulerIndent, HistoryGroupBindingOptions } from '@docx-editor.dev/core/editor';
4
- export { CHROME_GROUPS, CHROME_MENUS, ChromeExportFormat, ChromeExportHandlers, ChromeMenu, ChromeMenuEntry, ChromeMenuId, ChromeMenuItemEntry, ChromeMenuSeparatorEntry, ChromeMenuSubmenuEntry, ChromeSlotId, ClearRefreshHighlightsOptions, DEFAULT_FONT, DocumentRefresh, DocumentRefreshError, DocumentRefreshState, DocumentSearchFindOptions, DocumentSearchHighlight, DocumentSearchNavigateOptions, DocumentSearchOptions, FontConfigurationBase, FontConfigurationFragment, FontLoadFailure, FontLoadFailureReason, FontOrigin, FontResolutionRequest, FontResolver, FontResolverMark, FontUrlSource, HIGHLIGHT_REFRESH_MS, HighlightSource, ImageWrapTarget, LOADING_SNAPSHOT, LoadFontsRequest, LoadFontsResult, MAX_RESOLVER_FAMILIES, MarkedFontResolver, NavigateToChangeOptions, PX_PER_CM, PX_PER_INCH, ParagraphFlagState, ParagraphFormatRead, ParagraphFormatUpdate, ParagraphTabStop, RefreshChange, RefreshChangeInput, RefreshFailureCode, RefreshHighlightAnimation, RefreshHighlightOptions, RefreshLocation, RefreshResult, RefreshSubmission, RefreshUpdate, ReviewAuthorInfo, RevisionAuthorAssignments, RevisionAuthorStyle, RevisionStyles, RulerTick, RulerUnit, SEARCH_DEBOUNCE_MS, SEARCH_HIGHLIGHT_PRIORITY, SEARCH_HIGHLIGHT_SET, SEARCH_MATCH_LIMIT, ToolbarCommandState, WORD_DEFAULT_FONT, chromeMenuSlots, commandForSlot, composeFontConfiguration, composeFontOrigins, createDocumentRefresh, createFontSource, defineFontResolver, generateRulerTicks, isFontResolver, loadFonts, rulerPageBox, runToolbarCommand, toolbarCommandState } from '@docx-editor.dev/core/editor';
13
+ import { RevisionMarkupDialogSession, ResolvedRevisionMarkup, RevisionMarkupOptions, ChromeExportFormat, InvalidTextFormFieldSession, ContentControlWidgetSession, CalendarMonth, ContentControlListNavigation, CalendarDay, TextFormFieldDialogSession, RevisionAuthorStyle, ParagraphDialogFields, ParagraphDialogMixed, ChromeMenuId, ChromeSlotId, ChromeMenuEntry, DocxEditorInstance, FontConfigurationFragment, FontResolver, EditorModule, ReviewDisplayMode, FieldResultsMode, ImageDecodePort, ChromeGroupId, SupportedImageMime, TableChromeSlotId, ChromeExportHandlers, DocumentSearchHighlight, DocumentSearchFindOptions, SurfaceHyperlink, FontOrigin, MarkedFontResolver, ReviewAuthorInfo, EditorCommandExecute, ToolbarValueMap, HighlightSource, ParagraphFormatRead, ParagraphFormatUpdate, TextMeasurer, PaginatedSurfaceState, NavigationCommand, SurfaceFormatting, SectionProperties, RulerIndent, HistoryGroupBindingOptions } from '@docx-editor.dev/core/editor';
14
+ export { CHROME_GROUPS, CHROME_MENUS, ChromeExportFormat, ChromeExportHandlers, ChromeMenu, ChromeMenuEntry, ChromeMenuId, ChromeMenuItemEntry, ChromeMenuSeparatorEntry, ChromeMenuSubmenuEntry, ChromeSlotId, ClearRefreshHighlightsOptions, DEFAULT_FONT, DocumentRefresh, DocumentRefreshError, DocumentRefreshState, DocumentSearchFindOptions, DocumentSearchHighlight, DocumentSearchNavigateOptions, DocumentSearchOptions, FontConfigurationBase, FontConfigurationFragment, FontLoadFailure, FontLoadFailureReason, FontOrigin, FontResolutionRequest, FontResolver, FontResolverMark, FontUrlSource, HIGHLIGHT_REFRESH_MS, HighlightSource, ImageWrapTarget, LOADING_SNAPSHOT, LoadFontsRequest, LoadFontsResult, MAX_RESOLVER_FAMILIES, MarkedFontResolver, NavigateToChangeOptions, PX_PER_CM, PX_PER_INCH, ParagraphFlagState, ParagraphFormatRead, ParagraphFormatUpdate, ParagraphTabStop, RefreshChange, RefreshChangeInput, RefreshFailureCode, RefreshHighlightAnimation, RefreshHighlightOptions, RefreshLocation, RefreshResult, RefreshSubmission, RefreshUpdate, ResolvedRevisionMarkup, ReviewAuthorInfo, ReviewDisplayMode, RevisionAuthorAssignments, RevisionAuthorStyle, RevisionChangedLinesMark, RevisionDeletionMark, RevisionMarkupChromeHandlers, RevisionMarkupColor, RevisionMarkupDialogSession, RevisionMarkupMark, RevisionMarkupNamedColor, RevisionMarkupOptions, RevisionStyles, RulerTick, RulerUnit, SEARCH_DEBOUNCE_MS, SEARCH_HIGHLIGHT_PRIORITY, SEARCH_HIGHLIGHT_SET, SEARCH_MATCH_LIMIT, ToolbarCommandState, WORD_DEFAULT_FONT, chromeMenuSlots, commandForSlot, composeFontConfiguration, composeFontOrigins, createDocumentRefresh, createFontSource, defineFontResolver, generateRulerTicks, isFontResolver, loadFonts, rulerPageBox, runToolbarCommand, toolbarCommandState } from '@docx-editor.dev/core/editor';
5
15
  import { Editor, ViewScope, EditorCommand, DocumentSource, FontConfiguration, ZoomMode, DocumentChange, EditorFontError, TextMatch, DocumentHandle, EditorExecOptions, ExecResult, EditorScope, EditorSnapshot, EditorEvents, HighlightOptions, HighlightResult, HighlightRange, HighlightHit, PageSetup, IndentFormatting, ColorValue, Theme } from '@docx-editor.dev/core/contracts/editor';
6
16
  export { AnchorHighlightAnimation, AnchorHighlightOptions, ClearAnchorHighlightOptions, Editor, EditorCommand, EditorFontError, EditorFontErrorCode, EditorQuery, EditorScope, EditorSnapshot, FontConfiguration, FontFaceRequest, FontSource, FontSourceSubstitution, HighlightHit, HighlightOptions, HighlightRange, HighlightRect, HighlightResult, PageSetup, ScrollToAnchorOptions, TextMatch } from '@docx-editor.dev/core/contracts/editor';
7
17
  import { TFunction, Translations, LocaleStrings } from '@docx-editor.dev/i18n';
@@ -25,6 +35,92 @@ type MaybeRefOrGetter<T> = T;
25
35
  */
26
36
  type DocxEditorChildren = ReactNode;
27
37
 
38
+ /**
39
+ * Presentation overrides for a dialog part. @public
40
+ *
41
+ * Anything beyond these members reaches the rendered element, so a part takes an `id`,
42
+ * an `aria-*` label or a `data-*` test hook. The part's own wiring wins every collision:
43
+ * a host cannot replace Apply's handler or its `data-docx-part` marker by passing one.
44
+ * To own the element and its handler outright, pass `asChild` and supply your own.
45
+ */
46
+ interface DialogPartProps {
47
+ className?: string;
48
+ style?: CSSProperties;
49
+ hidden?: boolean;
50
+ asChild?: boolean;
51
+ children?: DocxEditorChildren;
52
+ id?: string;
53
+ title?: string;
54
+ 'aria-label'?: string;
55
+ [attribute: `data-${string}`]: unknown;
56
+ }
57
+ /** Layout customization for a packaged dialog. @public */
58
+ interface DialogCustomizationProps {
59
+ className?: string;
60
+ style?: CSSProperties;
61
+ /** Render the default arrangement, replacing named children in place. Defaults to true. */
62
+ preset?: boolean;
63
+ children?: DocxEditorChildren;
64
+ }
65
+ /** State shared by a dialog's controls. @public */
66
+ interface UseDialogReturn<Fields extends object> {
67
+ readonly values: Fields;
68
+ setValue<K extends keyof Fields>(name: K, value: Fields[K]): void;
69
+ readonly errors: Readonly<Partial<Record<keyof Fields | 'form', string>>>;
70
+ readonly isEnabled: boolean;
71
+ apply(): void;
72
+ cancel(): void;
73
+ }
74
+
75
+ /** Revision markup session and presentation. @public */
76
+ interface DocxEditorRevisionMarkupDialogProps extends DialogCustomizationProps {
77
+ session: RevisionMarkupDialogSession | null;
78
+ }
79
+ /** Revision markup draft and actions. @public */
80
+ interface UseRevisionMarkupDialogReturn extends UseDialogReturn<ResolvedRevisionMarkup> {
81
+ reset(): void;
82
+ }
83
+ /** Read the enclosing revision markup draft. @public */
84
+ declare function useRevisionMarkupDialog(): UseRevisionMarkupDialogReturn;
85
+ declare function RevisionMarkupDialogRoot({ session, ...props }: DocxEditorRevisionMarkupDialogProps): react.JSX.Element | null;
86
+ /** Track changes options with replaceable controls and layout. @public */
87
+ declare const DocxEditorRevisionMarkupDialog: typeof RevisionMarkupDialogRoot & {
88
+ Header: (props: DialogPartProps & {
89
+ name?: keyof ResolvedRevisionMarkup | undefined;
90
+ }) => string | number | bigint | boolean | react.JSX.Element | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | Iterable<react.ReactNode> | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | react.ReactPortal | null | undefined> | null;
91
+ Title: (props: DialogPartProps & {
92
+ name?: keyof ResolvedRevisionMarkup | undefined;
93
+ }) => string | number | bigint | boolean | react.JSX.Element | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | Iterable<react.ReactNode> | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | react.ReactPortal | null | undefined> | null;
94
+ Body: (props: DialogPartProps & {
95
+ name?: keyof ResolvedRevisionMarkup | undefined;
96
+ }) => string | number | bigint | boolean | react.JSX.Element | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | Iterable<react.ReactNode> | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | react.ReactPortal | null | undefined> | null;
97
+ Footer: (props: DialogPartProps & {
98
+ name?: keyof ResolvedRevisionMarkup | undefined;
99
+ }) => string | number | bigint | boolean | react.JSX.Element | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | Iterable<react.ReactNode> | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | react.ReactPortal | null | undefined> | null;
100
+ Apply: (props: DialogPartProps & {
101
+ name?: keyof ResolvedRevisionMarkup | undefined;
102
+ }) => string | number | bigint | boolean | react.JSX.Element | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | Iterable<react.ReactNode> | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | react.ReactPortal | null | undefined> | null;
103
+ Cancel: (props: DialogPartProps & {
104
+ name?: keyof ResolvedRevisionMarkup | undefined;
105
+ }) => string | number | bigint | boolean | react.JSX.Element | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | Iterable<react.ReactNode> | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | react.ReactPortal | null | undefined> | null;
106
+ Error: (props: DialogPartProps & {
107
+ name?: keyof ResolvedRevisionMarkup | undefined;
108
+ }) => string | number | bigint | boolean | react.JSX.Element | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | Iterable<react.ReactNode> | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | react.ReactPortal | null | undefined> | null;
109
+ Field: (props: DialogPartProps & {
110
+ name: keyof ResolvedRevisionMarkup;
111
+ }) => react.ReactNode;
112
+ Reset: (props: DialogPartProps & {
113
+ name?: keyof ResolvedRevisionMarkup | undefined;
114
+ }) => string | number | bigint | boolean | react.JSX.Element | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | Iterable<react.ReactNode> | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | react.ReactPortal | null | undefined> | null;
115
+ };
116
+
117
+ /** Viewer-local markup declarations. @public */
118
+ interface DocxEditorRevisionMarkupProps extends RevisionMarkupOptions {
119
+ onRevisionMarkupChange?: (settings: ResolvedRevisionMarkup) => void;
120
+ }
121
+ /** Declares markup settings without rendering an element. @public */
122
+ declare function DocxEditorRevisionMarkup(props: DocxEditorRevisionMarkupProps): null;
123
+
28
124
  /** State and presentation for the File menu export dialog. @public */
29
125
  interface DocxEditorExportDialogProps {
30
126
  /** Controls visibility when rendering the dialog directly. */
@@ -397,43 +493,6 @@ interface DocxEditorContentControlWidgetNamespace {
397
493
  /** Compact value editor for a configured content-control popup. @public */
398
494
  declare const DocxEditorContentControlWidget: DocxEditorContentControlWidgetNamespace;
399
495
 
400
- /**
401
- * Presentation overrides for a dialog part. @public
402
- *
403
- * Anything beyond these members reaches the rendered element, so a part takes an `id`,
404
- * an `aria-*` label or a `data-*` test hook. The part's own wiring wins every collision:
405
- * a host cannot replace Apply's handler or its `data-docx-part` marker by passing one.
406
- * To own the element and its handler outright, pass `asChild` and supply your own.
407
- */
408
- interface DialogPartProps {
409
- className?: string;
410
- style?: CSSProperties;
411
- hidden?: boolean;
412
- asChild?: boolean;
413
- children?: DocxEditorChildren;
414
- id?: string;
415
- title?: string;
416
- 'aria-label'?: string;
417
- [attribute: `data-${string}`]: unknown;
418
- }
419
- /** Layout customization for a packaged dialog. @public */
420
- interface DialogCustomizationProps {
421
- className?: string;
422
- style?: CSSProperties;
423
- /** Render the default arrangement, replacing named children in place. Defaults to true. */
424
- preset?: boolean;
425
- children?: DocxEditorChildren;
426
- }
427
- /** State shared by a dialog's controls. @public */
428
- interface UseDialogReturn<Fields extends object> {
429
- readonly values: Fields;
430
- setValue<K extends keyof Fields>(name: K, value: Fields[K]): void;
431
- readonly errors: Readonly<Partial<Record<keyof Fields | 'form', string>>>;
432
- readonly isEnabled: boolean;
433
- apply(): void;
434
- cancel(): void;
435
- }
436
-
437
496
  /** Draft values for legacy text Field Options. @public */
438
497
  interface TextFormFieldDialogFields {
439
498
  defaultText: string;
@@ -526,9 +585,22 @@ interface DocxEditorLoadingProps {
526
585
  /** Inline styles for the loading container, as on `DocxEditor.Viewport`. */
527
586
  style?: CSSProperties;
528
587
  /**
529
- * The loading screen. Omitted, a full-size document page with the packaged indicator
530
- * and localized status is used. Compose your own around `DocxEditor.Loading.Spinner`
531
- * to keep the packaged indicator beside your own copy.
588
+ * Your own loading indicator, in place of the packaged spinner. The packaged screen keeps
589
+ * its page and centers this on it. With `overlay`, it then moves onto the document's first
590
+ * page while a large document lays out its remaining pages, and scrolls with it.
591
+ *
592
+ * Include text for screen readers, as the packaged indicator does.
593
+ *
594
+ * ```tsx
595
+ * <DocxEditor.Loading overlay indicator={<MyLogoSpinner label="Opening document" />} />
596
+ * ```
597
+ */
598
+ indicator?: DocxEditorChildren;
599
+ /**
600
+ * The whole first loading screen, in place of the packaged page. Compose your own around
601
+ * `DocxEditor.Loading.Spinner` to keep the packaged indicator beside your own copy. To
602
+ * change only the indicator, and keep it on the first page as the document opens, use
603
+ * `indicator`.
532
604
  */
533
605
  children?: DocxEditorChildren;
534
606
  }
@@ -577,7 +649,13 @@ interface DocxEditorLoadingComponent {
577
649
  * It covers TWO windows. Before bytes arrive it is the empty-state screen. And while a
578
650
  * LARGE document opens — the engine mounts it behind one painted frame precisely so this
579
651
  * screen can paint before the blocking parse and layout — it holds until the pages land;
580
- * pass `overlay` to pin it over the previous document for that window. A parse failure
652
+ * pass `overlay` to pin it over the previous document for that window. With `overlay`, once
653
+ * the first pages show, the indicator moves onto the first page until the rest are laid out.
654
+ * Pass `indicator` to replace only the spinner, in both places:
655
+ *
656
+ * ```tsx
657
+ * <DocxEditor.Loading overlay indicator={<MyLogoSpinner label="Opening document" />} />
658
+ * ``` A parse failure
581
659
  * clears both, so a broken document never spins forever; report that from
582
660
  * `snapshot().parseError` or the `error` event. Add `when` only for async the editor
583
661
  * cannot observe, typically a host that mounts the provider after its own fetch.
@@ -936,8 +1014,8 @@ interface MenuTableGridProps {
936
1014
  className?: string;
937
1015
  }
938
1016
  /**
939
- * Word's insert-table size picker: a 6×6 grid that highlights as the pointer sweeps it
940
- * and reads back the size underneath.
1017
+ * The insert-table size picker: a 6×6 grid that highlights as the pointer sweeps it and
1018
+ * reads back the size underneath. A pick inserts the table and closes the menu bar.
941
1019
  *
942
1020
  * Rendered only when the engine will honour an insert (see `MenuTablePicker`). A panel
943
1021
  * that opens onto a grid nothing can be picked from is worse than no panel: the row
@@ -1026,16 +1104,31 @@ interface MenuGroupProps {
1026
1104
  * @public
1027
1105
  */
1028
1106
  declare function MenuGroup({ label: literal, labelKey, className, hidden, children, }: MenuGroupProps): react.JSX.Element | null;
1029
- /** Props for `DocxEditor.Menu.Item`: one chrome slot as a menu row. @public */
1030
- interface MenuItemProps {
1107
+ /**
1108
+ * Props for `DocxEditor.Menu.Item`: one chrome slot as a menu row. Set `slotId`. A row with
1109
+ * neither `slotId` nor the deprecated `slot` renders nothing, with a development warning.
1110
+ * An interface, so a host can extend it.
1111
+ *
1112
+ * @public
1113
+ */
1114
+ interface MenuItemProps extends MenuItemBaseProps {
1031
1115
  /** The chrome slot this row drives (`'text.bold'`, `'insert.pageBreak'`, …). */
1032
- slot: ChromeSlotId;
1116
+ slotId?: ChromeSlotId;
1117
+ /** @deprecated Use `slotId`. Still read in this release, with a development warning. */
1118
+ slot?: ChromeSlotId;
1119
+ }
1120
+ /** The props every `Menu.Item` takes besides the slot it names. @public */
1121
+ interface MenuItemBaseProps {
1033
1122
  /** Plain-label i18n key, overriding the slot's tooltip-shaped one. */
1034
1123
  labelKey?: string;
1035
1124
  /** i18n key of the shortcut shown in the right column. */
1036
1125
  shortcutKey?: string;
1037
1126
  className?: string;
1038
- /** Render nothing — inside a packaged menu this removes the row. */
1127
+ /**
1128
+ * Render nothing: inside a packaged menu this removes the row in place. A named row part
1129
+ * with `hidden`, such as `<ContextMenu.Cut hidden />`, is shorthand for this override
1130
+ * with that row's `slotId`.
1131
+ */
1039
1132
  hidden?: boolean;
1040
1133
  }
1041
1134
  /**
@@ -1045,7 +1138,7 @@ interface MenuItemProps {
1045
1138
  *
1046
1139
  * @public
1047
1140
  */
1048
- declare function MenuItem({ slot, labelKey, shortcutKey, className, hidden }: MenuItemProps): react.JSX.Element | null;
1141
+ declare function MenuItem(props: MenuItemProps): react.JSX.Element | null;
1049
1142
  declare namespace MenuItem {
1050
1143
  var docxMenuRow: true;
1051
1144
  }
@@ -1085,9 +1178,20 @@ declare function MenuImageInsertImpl({ className, hidden }: MenuActionProps): re
1085
1178
  declare const MenuImageInsert: typeof MenuImageInsertImpl & {
1086
1179
  docxSlot: ChromeSlotId;
1087
1180
  };
1088
- interface MenuSubmenuProps {
1181
+ /**
1182
+ * Props for `DocxEditor.Menu.Submenu`. Set `labelKey` or `label`. A submenu with neither has
1183
+ * no name, with a development warning. An interface, so a host can extend it.
1184
+ *
1185
+ * @public
1186
+ */
1187
+ interface MenuSubmenuProps extends MenuSubmenuBaseProps {
1089
1188
  /** i18n key of the parent row's label. */
1090
- labelKey: string;
1189
+ labelKey?: string;
1190
+ /** Literal parent row label, already resolved. Wins over `labelKey`. */
1191
+ label?: string;
1192
+ }
1193
+ /** The props every `Menu.Submenu` takes besides its label. @public */
1194
+ interface MenuSubmenuBaseProps {
1091
1195
  /** Material Symbols paths for the parent row's icon. */
1092
1196
  paths?: readonly string[] | null;
1093
1197
  className?: string;
@@ -1103,7 +1207,7 @@ interface MenuSubmenuProps {
1103
1207
  *
1104
1208
  * @public
1105
1209
  */
1106
- declare function MenuSubmenu({ labelKey, paths, className, children }: MenuSubmenuProps): react.JSX.Element;
1210
+ declare function MenuSubmenu({ labelKey, label: literal, paths, className, children, }: MenuSubmenuProps): react.JSX.Element;
1107
1211
  /** Props for `DocxEditor.Menu.Separator`. @public */
1108
1212
  interface MenuSeparatorProps {
1109
1213
  className?: string;
@@ -1168,41 +1272,6 @@ interface MenuPartComponent {
1168
1272
  (props: Omit<MenuProps, 'id'>): ReactNode;
1169
1273
  readonly docxMenu: ChromeMenuId;
1170
1274
  }
1171
- /** Props for `DocxEditor.Menu.ReportIssue`. @public */
1172
- interface MenuReportIssueProps {
1173
- className?: string;
1174
- /** Render nothing — inside the packaged Help menu this removes the row. */
1175
- hidden?: boolean;
1176
- /** Replaces the packaged handler. Falls back to the menu's `onReportIssue`, then to
1177
- * this project's own tracker. */
1178
- onSelect?: () => void;
1179
- }
1180
- /**
1181
- * Help › Report issue.
1182
- *
1183
- * A NAMED part rather than anonymous markup inside the Help menu, because it is the one
1184
- * packaged row that reaches OUTSIDE the host's product: it opens this project's issue
1185
- * tracker with the current page URL and user agent prefilled. A host embedding the editor
1186
- * in its own app has every reason to point that somewhere else or drop it, and it should
1187
- * not have to rebuild the menu to do either — `reportIssue={false}` removes it,
1188
- * `onReportIssue` redirects it, and this part composes it back by name.
1189
- *
1190
- * @public
1191
- */
1192
- declare function MenuReportIssueImpl({ className, hidden, onSelect }: MenuReportIssueProps): react.JSX.Element | null;
1193
- /**
1194
- * The report-issue row, with its row-identity marker.
1195
- *
1196
- * The key is NOT a `ChromeSlotId` — the row is React's, not the shared registry's — but the
1197
- * merge only needs a stable string, and using one here is what lets a host write
1198
- * `<Menu.ReportIssue hidden/>` and have it REPLACE the packaged row rather than render a
1199
- * second, invisible one beside it.
1200
- *
1201
- * @public
1202
- */
1203
- declare const MenuReportIssue: typeof MenuReportIssueImpl & {
1204
- docxSlot: string;
1205
- };
1206
1275
 
1207
1276
  /** Props for a packaged context-menu row. @public */
1208
1277
  interface ContextMenuCommandProps {
@@ -1414,7 +1483,7 @@ interface DocxEditorContextMenuNamespace {
1414
1483
  readonly RefreshTocPageNumbers: typeof ContextMenuRefreshTocPageNumbers;
1415
1484
  /** A host-owned row: no slot, no command, the host's own label and action. */
1416
1485
  readonly Item: typeof ContextMenuItem;
1417
- /** Any chrome slot as a live row (`<ContextMenu.Slot slot="text.bold" />`). */
1486
+ /** Any chrome slot as a live row (`<ContextMenu.Slot slotId="text.bold" />`). */
1418
1487
  readonly Slot: typeof MenuItem;
1419
1488
  /** Bare row presentation, for a host building something the parts do not cover. */
1420
1489
  readonly Row: typeof MenuRow;
@@ -1506,6 +1575,7 @@ interface DocxEditorPopups {
1506
1575
  notesContextMenu?: DocxEditorPopup<DocxEditorNotesContextMenuProps>;
1507
1576
  pageSetup?: DocxEditorPopup<DocxEditorPageSetupDialogProps>;
1508
1577
  paragraph?: DocxEditorPopup<DocxEditorParagraphDialogProps>;
1578
+ revisionMarkup?: DocxEditorPopup<DocxEditorRevisionMarkupDialogProps>;
1509
1579
  textFormField?: DocxEditorPopup<DocxEditorTextFormFieldDialogProps>;
1510
1580
  hyperlink?: DocxEditorPopup<HyperLinkProps>;
1511
1581
  contentControl?: DocxEditorPopup<ContentControlProps>;
@@ -1604,6 +1674,23 @@ interface DocxEditorRootProps {
1604
1674
  * navigation pane shrinks the document by what it took. Pass `{ type: 'fixed' }` to opt out.
1605
1675
  */
1606
1676
  zoomMode?: ZoomMode | 'auto';
1677
+ /**
1678
+ * Controlled viewer markup settings. Omitted fields use defaults.
1679
+ * Save callback values into this prop to accept API and dialog changes.
1680
+ * Omit this prop for uncontrolled settings. Use one configuration source.
1681
+ */
1682
+ revisionMarkup?: RevisionMarkupOptions;
1683
+ /** Receives proposed settings from API or dialog changes, excluding prop reconciliation. */
1684
+ onRevisionMarkupChange?: (settings: ResolvedRevisionMarkup) => void;
1685
+ /** Initial revision display mode. */
1686
+ reviewDisplayMode?: ReviewDisplayMode;
1687
+ /**
1688
+ * How the reader edits saved field results. `'atomic'` (the default) keeps every field one
1689
+ * unit. `'editable'` allows typing, deletion, and selection inside the saved result of a
1690
+ * DATE, MERGEFIELD, HYPERLINK, or similar field. Read once, when the editor is created: a later change is ignored, with a development warning. Refused
1691
+ * with a collaboration module.
1692
+ */
1693
+ fieldResults?: FieldResultsMode;
1607
1694
  /** Fired once per instance, after it is published to the tree (and after any
1608
1695
  * `DocxEditor.Content` in the same commit has attached its mount point). A large
1609
1696
  * document mounts behind one painted frame; `onReady` fires AFTER that mount lands,
@@ -1627,6 +1714,7 @@ interface DocxEditorRootListeners {
1627
1714
  onReady?: (editor: Editor) => void;
1628
1715
  onChange?: (change: DocumentChange) => void;
1629
1716
  onFontError?: (error: EditorFontError) => void;
1717
+ onRevisionMarkupChange?: (settings: ResolvedRevisionMarkup) => void;
1630
1718
  }
1631
1719
  /** @public Vue-only setup result; exported for cross-adapter API parity. */
1632
1720
  interface ProvideDocxEditorResult {
@@ -1682,15 +1770,24 @@ declare namespace ToolbarReviewers {
1682
1770
 
1683
1771
  /** Props for `DocxEditorToolbar.Button`. @public */
1684
1772
  interface ToolbarButtonProps$1 {
1685
- /** The chrome slot this button drives (`'text.bold'`, `'history.undo'`, ...). */
1686
- slot: ChromeSlotId;
1773
+ /**
1774
+ * The chrome slot this button drives (`'text.bold'`, `'history.undo'`, ...). A button with
1775
+ * neither `slotId` nor the deprecated `slot` renders nothing, with a development warning.
1776
+ */
1777
+ slotId?: ChromeSlotId;
1778
+ /** @deprecated Use `slotId`. Still read in this release, with a development warning. */
1779
+ slot?: ChromeSlotId;
1687
1780
  /** Icon override; falls back to `children`, then to the registry's icon paths. */
1688
1781
  icon?: DocxEditorChildren;
1689
1782
  /** Merge the button's behavior into the single child element instead of a <button>. */
1690
1783
  asChild?: boolean;
1691
1784
  className?: string;
1692
1785
  children?: DocxEditorChildren;
1693
- /** Render nothing — inside the default arrangement this removes the slot. */
1786
+ /**
1787
+ * Render nothing: inside the default arrangement this removes the slot in place. A named
1788
+ * part is shorthand for the slot override, so `<Toolbar.Bold hidden />` is
1789
+ * `<Toolbar.Slot slotId="text.bold" hidden />`.
1790
+ */
1694
1791
  hidden?: boolean;
1695
1792
  }
1696
1793
  /**
@@ -1705,6 +1802,107 @@ declare namespace ToolbarButton$1 {
1705
1802
  var docxToolbarPart: true;
1706
1803
  }
1707
1804
 
1805
+ /** Props for `DocxEditor.Toolbar.Group`. @public */
1806
+ interface DocxEditorToolbarGroupProps {
1807
+ /**
1808
+ * The group id. A built-in id (`'history'`, `'font'`, `'text'`, `'review'`, ...) adds the
1809
+ * children to that group, after its own controls. Any other id makes a host group.
1810
+ */
1811
+ id: ChromeGroupId | (string & {});
1812
+ /**
1813
+ * Catalog key for the host group's "⋯" panel heading and accessible name. It goes through
1814
+ * the toolbar's `t` and the locale catalog. Built-in groups keep their own label.
1815
+ */
1816
+ labelKey?: string;
1817
+ /**
1818
+ * Literal heading and accessible name for a host group. It wins over `labelKey`. Without
1819
+ * either, the heading is `id`. Built-in groups keep their own label.
1820
+ */
1821
+ label?: string;
1822
+ /**
1823
+ * Collapse priority. A lower number leaves the bar first. Built-in groups use 10 (zoom)
1824
+ * through 90 (history) in steps of 10. A host group without a priority collapses before
1825
+ * every built-in group.
1826
+ */
1827
+ priority?: number;
1828
+ /** `true` keeps the group in the bar at every width, like the review group. */
1829
+ pinned?: boolean;
1830
+ /**
1831
+ * The group this one follows in the bar. Without it, a host group follows every built-in
1832
+ * group, in order of appearance. Ignored for built-in ids.
1833
+ */
1834
+ after?: ChromeGroupId | (string & {});
1835
+ /** Removes the group, built-in or host, from the bar and the "⋯" panel. */
1836
+ hidden?: boolean;
1837
+ /**
1838
+ * Content for the group's "⋯" panel section, rendered after a built-in group's own rows.
1839
+ * It renders even when the group has no children, so a built-in id can add a panel-only
1840
+ * row. Without it, the panel renders the children in panel rows: actions and buttons
1841
+ * become labeled rows, and other content renders as is.
1842
+ */
1843
+ overflowContent?: () => DocxEditorChildren;
1844
+ className?: string;
1845
+ children?: DocxEditorChildren;
1846
+ }
1847
+ /**
1848
+ * A group of the preset toolbar: measured, collapsed in priority order, and shown as a
1849
+ * labeled section of the "⋯" panel when it does not fit.
1850
+ *
1851
+ * @example
1852
+ * ```tsx
1853
+ * <DocxEditor.Toolbar>
1854
+ * <DocxEditor.Toolbar.Group id="review-nav" label="Review" priority={15}>
1855
+ * <DocxEditor.Toolbar.Action label="Next change" icon={<NextIcon />} onSelect={next} />
1856
+ * </DocxEditor.Toolbar.Group>
1857
+ * <DocxEditor.Toolbar.Group id="zoom" hidden />
1858
+ * </DocxEditor.Toolbar>
1859
+ * ```
1860
+ *
1861
+ * @public
1862
+ */
1863
+ declare function ToolbarHostGroup(props: DocxEditorToolbarGroupProps): react.JSX.Element | null;
1864
+ declare namespace ToolbarHostGroup {
1865
+ var docxToolbarGroup: true;
1866
+ }
1867
+ /** Props for `DocxEditor.Toolbar.Slot`. @public */
1868
+ interface DocxEditorToolbarSlotProps {
1869
+ /** The built-in slot this content replaces, for example `'text.bold'`. */
1870
+ slotId: ChromeSlotId;
1871
+ /**
1872
+ * Render nothing: inside the preset arrangement this removes the slot in place. A named
1873
+ * part with `hidden`, such as `<Toolbar.Bold hidden />`, is shorthand for this override.
1874
+ */
1875
+ hidden?: boolean;
1876
+ /**
1877
+ * Content for the slot's "⋯" panel row when its group collapses. Without it the panel row
1878
+ * shows the children under the slot's label.
1879
+ */
1880
+ overflowContent?: () => DocxEditorChildren;
1881
+ children?: DocxEditorChildren;
1882
+ }
1883
+ /**
1884
+ * Replaces one built-in slot with arbitrary content. The content takes the slot's place and
1885
+ * collapses with the slot's group. A slot the preset arrangement does not draw has no place
1886
+ * to take, so the content is appended and a development warning names the slot. With
1887
+ * `hidden` it removes the slot in place; a named part with `hidden`, such as
1888
+ * `<Toolbar.Bold hidden />`, is shorthand for `<Toolbar.Slot slotId="text.bold" hidden />`.
1889
+ *
1890
+ * @example
1891
+ * ```tsx
1892
+ * <DocxEditor.Toolbar>
1893
+ * <DocxEditor.Toolbar.Slot slotId="zoom.level" overflowContent={() => <MyZoomList />}>
1894
+ * <MyZoomPicker />
1895
+ * </DocxEditor.Toolbar.Slot>
1896
+ * </DocxEditor.Toolbar>
1897
+ * ```
1898
+ *
1899
+ * @public
1900
+ */
1901
+ declare function ToolbarSlot(props: DocxEditorToolbarSlotProps): react.JSX.Element | null;
1902
+ declare namespace ToolbarSlot {
1903
+ var docxToolbarSlot: true;
1904
+ }
1905
+
1708
1906
  interface ImageInsertProviderProps {
1709
1907
  children: ReactNode;
1710
1908
  }
@@ -1769,7 +1967,11 @@ interface ToolbarPartComponent {
1769
1967
  */
1770
1968
  interface ToolbarSlotPartProps {
1771
1969
  className?: string;
1772
- /** Render nothing — inside the default arrangement this removes the slot. */
1970
+ /**
1971
+ * Render nothing: inside the default arrangement this removes the slot in place. A named
1972
+ * part is shorthand for the slot override, so `<Toolbar.Bold hidden />` is
1973
+ * `<Toolbar.Slot slotId="text.bold" hidden />`.
1974
+ */
1773
1975
  hidden?: boolean;
1774
1976
  }
1775
1977
  /** A non-button part pinned to one slot. @public */
@@ -1784,6 +1986,24 @@ interface ToolbarSeparatorProps {
1784
1986
  /** A vertical rule between toolbar groups. @public */
1785
1987
  declare function ToolbarSeparator({ className }: ToolbarSeparatorProps): react.JSX.Element;
1786
1988
 
1989
+ /**
1990
+ * Add Comment (`DocxEditorToolbar.AddComment`, slot `review.addComment`): opens a comment
1991
+ * draft on the selection in the review rail. It needs a mounted review rail to open the
1992
+ * draft. It is not part of the default arrangement; place it with `Toolbar.Group`.
1993
+ *
1994
+ * @example
1995
+ * ```tsx
1996
+ * <DocxEditor.Toolbar>
1997
+ * <DocxEditor.Toolbar.Group id="review">
1998
+ * <DocxEditor.Toolbar.AddComment />
1999
+ * </DocxEditor.Toolbar.Group>
2000
+ * </DocxEditor.Toolbar>
2001
+ * ```
2002
+ *
2003
+ * @public
2004
+ */
2005
+ declare const ToolbarAddComment: ToolbarPartComponent;
2006
+
1787
2007
  /**
1788
2008
  * Props for the split colour controls. @public
1789
2009
  *
@@ -1838,8 +2058,9 @@ interface ToolbarActionProps {
1838
2058
  /**
1839
2059
  * A host-owned toolbar action, styled and behaved like the packaged controls.
1840
2060
  *
1841
- * Renders inside `<DocxEditor.Toolbar>` after the default arrangement (it drives no slot,
1842
- * so it is an appended child), or anywhere under `preset={false}`.
2061
+ * Inside `<DocxEditor.Toolbar>` it appends after the default arrangement and never
2062
+ * collapses. Put it in a `Toolbar.Group` to have it collapse into the "⋯" panel, where it
2063
+ * renders as a row with its icon and `label`. Under `preset={false}` it renders as written.
1843
2064
  *
1844
2065
  * @public
1845
2066
  */
@@ -2119,6 +2340,15 @@ interface DocxEditorToolbarNamespace {
2119
2340
  /** A host-owned action the chrome registry does not describe. */
2120
2341
  readonly Action: typeof ToolbarAction;
2121
2342
  readonly Separator: typeof ToolbarSeparator;
2343
+ /**
2344
+ * A group of the preset bar: host content that is measured and collapses into the "⋯"
2345
+ * panel, or, with a built-in id, controls added to that group or the group hidden.
2346
+ */
2347
+ readonly Group: typeof ToolbarHostGroup;
2348
+ /** Replaces one built-in slot with arbitrary content, in the slot's place. */
2349
+ readonly Slot: typeof ToolbarSlot;
2350
+ /** Opens a comment draft on the selection in the review rail. */
2351
+ readonly AddComment: typeof ToolbarAddComment;
2122
2352
  readonly Undo: ToolbarPartComponent;
2123
2353
  readonly Redo: ToolbarPartComponent;
2124
2354
  readonly Bold: ToolbarPartComponent;
@@ -2179,6 +2409,42 @@ interface DocxEditorToolbarNamespace {
2179
2409
  */
2180
2410
  declare const DocxEditorToolbar: DocxEditorToolbarNamespace;
2181
2411
 
2412
+ /** Props for `DocxEditor.Menu.ReportIssue`. @public */
2413
+ interface MenuReportIssueProps {
2414
+ className?: string;
2415
+ /** Render nothing — inside the packaged Help menu this removes the row. */
2416
+ hidden?: boolean;
2417
+ /** Replaces the packaged handler. Falls back to the menu's `onReportIssue`, then to
2418
+ * this project's own tracker. */
2419
+ onSelect?: () => void;
2420
+ }
2421
+ /**
2422
+ * Help › Report issue.
2423
+ *
2424
+ * A NAMED part rather than anonymous markup inside the Help menu, because it is the one
2425
+ * packaged row that reaches OUTSIDE the host's product: it opens this project's issue
2426
+ * tracker with the current page URL and user agent prefilled. A host embedding the editor
2427
+ * in its own app has every reason to point that somewhere else or drop it, and it should
2428
+ * not have to rebuild the menu to do either — `reportIssue={false}` removes it,
2429
+ * `onReportIssue` redirects it, and this part composes it back by name.
2430
+ *
2431
+ * @public
2432
+ */
2433
+ declare function MenuReportIssueImpl({ className, hidden, onSelect }: MenuReportIssueProps): react.JSX.Element | null;
2434
+ /**
2435
+ * The report-issue row, with its row-identity marker.
2436
+ *
2437
+ * The key is NOT a `ChromeSlotId` — the row is React's, not the shared registry's — but the
2438
+ * merge only needs a stable string, and using one here is what lets a host write
2439
+ * `<Menu.ReportIssue hidden/>` and have it REPLACE the packaged row rather than render a
2440
+ * second, invisible one beside it.
2441
+ *
2442
+ * @public
2443
+ */
2444
+ declare const MenuReportIssue: typeof MenuReportIssueImpl & {
2445
+ docxSlot: string;
2446
+ };
2447
+
2182
2448
  type MenuReviewersProps = {
2183
2449
  className?: string;
2184
2450
  hidden?: boolean;
@@ -2233,6 +2499,21 @@ interface DocxEditorMenuProps {
2233
2499
  * children override their menu in place, others append.
2234
2500
  */
2235
2501
  preset?: boolean;
2502
+ /**
2503
+ * What the bar does when its menus do not fit on one line. Default `true`: the bar stays
2504
+ * one line, measures its menus, and moves the ones that do not fit, from the end, into
2505
+ * one "⋯" menu, where each becomes a submenu with the same rows. `false` lets the bar
2506
+ * wrap onto more lines instead.
2507
+ *
2508
+ * The bar must be able to shrink for this to work, so give it a bounded width (for
2509
+ * example `min-width: 0` in a flex row). Host children that are not menus never move.
2510
+ *
2511
+ * @example
2512
+ * ```tsx
2513
+ * <DocxEditor.Menu overflow={false} />
2514
+ * ```
2515
+ */
2516
+ overflow?: boolean;
2236
2517
  children?: DocxEditorChildren;
2237
2518
  }
2238
2519
  /** The menu bar with its parts attached as statics. @public */
@@ -2424,6 +2705,12 @@ interface UseNavigationPaneResult {
2424
2705
  * the left gutter was already wide enough to hold it — which is the point.
2425
2706
  */
2426
2707
  readonly shift: number;
2708
+ /**
2709
+ * Whether the open pane covers the page instead of moving it. True on a viewport too
2710
+ * narrow to show a readable page beside the pane (see `NAVIGATION_PANE_MIN_PAGE_ROOM`);
2711
+ * `shift` is then 0, and `DocxEditor.Navigation` closes after a heading or result is picked.
2712
+ */
2713
+ readonly overlay: boolean;
2427
2714
  }
2428
2715
  /**
2429
2716
  * The navigation pane's behavior, with no UI attached: open state, the active tab, and
@@ -2497,8 +2784,9 @@ declare function NavigationToggle({ className, style, children, }: NavigationPar
2497
2784
  /** Props for `DocxEditor.Navigation`. @public */
2498
2785
  interface DocxEditorNavigationProps extends UseNavigationPaneOptions {
2499
2786
  /**
2500
- * Label resolver. Defaults to the active `LocaleContext` catalogue (bundled English
2501
- * unless a provider swapped it), matching `<DocxEditor>`'s own default.
2787
+ * Label resolver. Defaults to the `translate` given to `DocxEditor.Root`, and for keys it
2788
+ * leaves unresolved, to the active `LocaleContext` catalogue (bundled English unless a
2789
+ * provider swapped it).
2502
2790
  */
2503
2791
  t?: (key: string, params?: Record<string, string | number>) => string;
2504
2792
  /**
@@ -2516,6 +2804,12 @@ interface DocxEditorNavigationProps extends UseNavigationPaneOptions {
2516
2804
  * tab; another `useDocumentSearch` consumer can still request them.
2517
2805
  */
2518
2806
  searchHighlight?: DocumentSearchHighlight;
2807
+ /**
2808
+ * Whether Ctrl+F (Cmd+F on macOS) opens the pane on the Find tab. Defaults to `true`. The
2809
+ * shortcut applies only while focus is in this editor, so the rest of the page keeps the
2810
+ * browser's own search. Set `false` to leave the shortcut to the browser everywhere.
2811
+ */
2812
+ findShortcut?: boolean;
2519
2813
  className?: string;
2520
2814
  style?: CSSProperties;
2521
2815
  /** Replaces the default composition (header, tabs, both panels). */
@@ -2642,6 +2936,21 @@ interface NavigationShiftInput {
2642
2936
  * make the pane jump on the first frame and settle on the second.
2643
2937
  */
2644
2938
  declare function navigationShift({ viewportWidth, pageWidthPx, reservation, inlineEndReservation, inlineStartReservation, docked, }: NavigationShiftInput): number;
2939
+ /**
2940
+ * The narrowest page column, in px, an open pane must leave beside it.
2941
+ *
2942
+ * Below it a shift cannot help: a 390px phone viewport less the default 328px reservation
2943
+ * leaves a 62px strip of page. There the pane overlays the page instead, at the viewport's
2944
+ * full width less its inset on each side, and the page does not move.
2945
+ */
2946
+ declare const NAVIGATION_PANE_MIN_PAGE_ROOM = 320;
2947
+ /**
2948
+ * Whether an open pane overlays the page rather than moving it: true when the viewport
2949
+ * leaves less than {@link NAVIGATION_PANE_MIN_PAGE_ROOM} beside the reservation. Uses the
2950
+ * viewport's client width only, never a padding the pane itself causes, so the answer cannot
2951
+ * feed back into its own input. `false` for a viewport that has not been measured.
2952
+ */
2953
+ declare function navigationPaneOverlays(viewportWidth: number, reservation: number): boolean;
2645
2954
 
2646
2955
  /**
2647
2956
  * The px the chrome is currently displaced by an open navigation pane. `0` when no pane
@@ -2663,8 +2972,22 @@ interface DocxEditorPageNumberProps {
2663
2972
  /**
2664
2973
  * Floating localized page readout for the active `DocxEditor.Viewport`.
2665
2974
  *
2666
- * Render it as a sibling of the viewport inside a positioned wrapper. It appears while a
2667
- * multi-page document scrolls and fades after 600 ms of inactivity.
2975
+ * It appears while a multi-page document scrolls and fades after 600 ms of inactivity. It is
2976
+ * positioned `absolute` against the nearest positioned ancestor, so give the element that holds
2977
+ * the viewport `position: relative`.
2978
+ *
2979
+ * Place it as a sibling of the viewport or inside it. Inside the viewport, it renders into the
2980
+ * viewport's parent element, so it stays in view while the pages scroll.
2981
+ *
2982
+ * @example
2983
+ * ```tsx
2984
+ * <div style={{ position: 'relative', height: '100%' }}>
2985
+ * <DocxEditor.Viewport>
2986
+ * <DocxEditor.Content />
2987
+ * </DocxEditor.Viewport>
2988
+ * <DocxEditor.PageNumber />
2989
+ * </div>
2990
+ * ```
2668
2991
  *
2669
2992
  * @public
2670
2993
  */
@@ -2735,6 +3058,18 @@ interface DocxEditorProps {
2735
3058
  */
2736
3059
  readonly renderTitleBarLeft?: () => DocxEditorChildren;
2737
3060
  readonly renderTitleBarRight?: () => DocxEditorChildren;
3061
+ /**
3062
+ * Your own loading indicator, in place of the packaged spinner. It shows centered on a
3063
+ * blank page before the document arrives, then on the document's first page while a large
3064
+ * document lays out its remaining pages, and scrolls with it. Include text for screen
3065
+ * readers, as the packaged indicator does. Requires `chrome`; without it, compose
3066
+ * `DocxEditor.Loading` yourself.
3067
+ *
3068
+ * ```tsx
3069
+ * <DocxEditor document={bytes} loadingIndicator={<MyLogoSpinner label="Opening" />} />
3070
+ * ```
3071
+ */
3072
+ readonly loadingIndicator?: DocxEditorChildren;
2738
3073
  /**
2739
3074
  * Chrome colour mode. `'system'` follows the OS and re-resolves when it changes.
2740
3075
  * Only the editor CHROME is themed — the document canvas stays Word-faithful.
@@ -2847,6 +3182,9 @@ interface DocxEditorProps {
2847
3182
  * opens Find. Before this took an object the only way to change any of that was
2848
3183
  * `navigation={false}` plus rebuilding the pane. `true`/undefined keep the packaged
2849
3184
  * defaults.
3185
+ *
3186
+ * The pane captures Ctrl+F (Cmd+F on macOS) while focus is in this editor and opens Find.
3187
+ * `navigation={{ findShortcut: false }}` leaves the shortcut to the browser.
2850
3188
  */
2851
3189
  navigation?: boolean | DocxEditorNavigationProps;
2852
3190
  /**
@@ -2884,6 +3222,23 @@ interface DocxEditorProps {
2884
3222
  * `{ type: 'fixed' }` opts out.
2885
3223
  */
2886
3224
  zoomMode?: ZoomMode | 'auto';
3225
+ /**
3226
+ * Controlled viewer markup settings. Omitted fields use defaults.
3227
+ * Save callback values into this prop to accept API and dialog changes.
3228
+ * Omit this prop for uncontrolled settings. Use one configuration source.
3229
+ */
3230
+ revisionMarkup?: RevisionMarkupOptions;
3231
+ /** Receives proposed settings from API or dialog changes, excluding prop reconciliation. */
3232
+ onRevisionMarkupChange?: (settings: ResolvedRevisionMarkup) => void;
3233
+ /** Initial revision display mode. */
3234
+ reviewDisplayMode?: ReviewDisplayMode;
3235
+ /**
3236
+ * How the reader edits saved field results. `'atomic'` (the default) keeps every field one
3237
+ * unit. `'editable'` allows typing, deletion, and selection inside the saved result of a
3238
+ * DATE, MERGEFIELD, HYPERLINK, or similar field. Read once, when the editor is created: a later change is ignored, with a development warning. Refused
3239
+ * with a collaboration module.
3240
+ */
3241
+ fieldResults?: FieldResultsMode;
2887
3242
  /**
2888
3243
  * BCP-47 locale for regional date input and engine-generated labels. Defaults to en-US.
2889
3244
  * Changes apply to subsequent edits without a remount; stored date formats are preserved.
@@ -2962,6 +3317,8 @@ interface DocxEditorNamespace extends ForwardRefExoticComponent<DocxEditorProps
2962
3317
  /** Conditional loading screen: renders while there is no document to paint. */
2963
3318
  readonly Loading: typeof DocxEditorLoading;
2964
3319
  readonly ColorByChangeType: typeof DocxEditorColorByChangeType;
3320
+ readonly RevisionMarkupDialog: typeof DocxEditorRevisionMarkupDialog;
3321
+ readonly RevisionMarkup: typeof DocxEditorRevisionMarkup;
2965
3322
  readonly AuthorStyle: typeof DocxEditorAuthorStyle;
2966
3323
  /** Context-fed horizontal ruler with draggable margins (props-driven export stays). */
2967
3324
  readonly HorizontalRuler: typeof DocxEditorHorizontalRuler;
@@ -3087,6 +3444,12 @@ interface ReviewGutterInput {
3087
3444
  * entitlement to measure the leftover against. The full column stands.
3088
3445
  */
3089
3446
  readonly docked?: boolean;
3447
+ /**
3448
+ * `overflow: 'scroll'`: the full column stands even when it does not fit. The page
3449
+ * keeps the one size it has with the pane closed, and the viewport scrolls sideways to
3450
+ * reach the cards.
3451
+ */
3452
+ readonly scroll?: boolean;
3090
3453
  }
3091
3454
  /**
3092
3455
  * The paddings, in px, the scroll container reserves for the review rail.
@@ -3097,13 +3460,13 @@ interface ReviewGutterInput {
3097
3460
  * frame paints exactly as it always did and collapses only once there is a real width
3098
3461
  * to decide by.
3099
3462
  */
3100
- declare function reviewGutter({ open, viewportWidth, pageWidthPx, inlineStartReservation, docked, }: ReviewGutterInput): ReviewGutter;
3463
+ declare function reviewGutter({ open, viewportWidth, pageWidthPx, inlineStartReservation, docked, scroll, }: ReviewGutterInput): ReviewGutter;
3101
3464
  /**
3102
3465
  * The gutter the review rail reserves right now: nothing with no rail mounted, and the
3103
3466
  * measured `reviewGutter` pair otherwise. The one source for the scroll container's
3104
3467
  * paddings and both rulers.
3105
3468
  *
3106
- * The result is reference-stable — the pure function answers with one of three shared
3469
+ * The result is reference-stable — the pure function answers with one of four shared
3107
3470
  * constants — and the hook stores THAT, never the raw width: a resize sweeps through
3108
3471
  * hundreds of widths that all resolve to the same constant, and holding the width as
3109
3472
  * state re-rendered every consumer (the review rail among them) once per pixel. Storing
@@ -4561,5 +4924,5 @@ interface UseHistoryGroupReturn {
4561
4924
  /** Bind a control's native gesture lifecycle. Apply values through the existing command hooks. @public */
4562
4925
  declare function useHistoryGroup({ kind }: HistoryGroupBindingOptions): UseHistoryGroupReturn;
4563
4926
 
4564
- export { CONTENT_CONTROL_SLOTS, ContextMenuCellVerticalAlignment, ContextMenuCopy, ContextMenuCopyFormatting, ContextMenuCut, ContextMenuDelete, ContextMenuDeleteTable, ContextMenuDeleteTableColumn, ContextMenuDeleteTableRow, ContextMenuInsertColumnLeft, ContextMenuInsertColumnRight, ContextMenuInsertRowAbove, ContextMenuInsertRowBelow, ContextMenuItem, ContextMenuPaste, ContextMenuPasteFormatting, ContextMenuPasteWithoutFormatting, ContextMenuRefreshToc, ContextMenuRefreshTocPageNumbers, ContextMenuSelectAll, DocumentName, DocumentOutline, DocxEditor, DocxEditorAuthorStyle, DocxEditorColorByChangeType, DocxEditorContent, DocxEditorContentControl, DocxEditorContentControlWidget, DocxEditorContextMenu, DocxEditorDocumentOutline, DocxEditorEquation, DocxEditorExportDialog, DocxEditorFontNotice, DocxEditorHeaderFooterChrome, DocxEditorHorizontalRuler, DocxEditorHyperLink, DocxEditorImageAltTextPopup, DocxEditorImagePropertiesDialog, DocxEditorInvalidTextFormFieldDialog, DocxEditorLoading, DocxEditorLoadingSpinner, DocxEditorMenu, DocxEditorNavigation, DocxEditorNotePreview, DocxEditorNotePropertiesDialog, DocxEditorNotesChrome, DocxEditorNotesContextMenu, DocxEditorPageNumber, DocxEditorPageSetupDialog, DocxEditorParagraphDialog, DocxEditorPrintDialog, DocxEditorRoot, DocxEditorShell, DocxEditorTextFormFieldDialog, DocxEditorToolbar, DocxEditorVerticalRuler, DocxEditorViewport, HorizontalRuler, ImageAltText, ImageInsertProvider, ImageInsertTrigger, ImagePropertiesTrigger, ImageWrap, LocaleProvider, Logo, MenuBar, NAVIGATION_PANE_GAP, NAVIGATION_PANE_INSET, NAVIGATION_PANE_WIDTH, NavigationClose, NavigationFind, NavigationHeader, NavigationHeadings, NavigationTab, NavigationTabs, NavigationTitle, NavigationToggle, OUTLINE_BUTTON_LEFT_OFFSET, OUTLINE_BUTTON_RESERVED_SPACE, OUTLINE_LEFT_OFFSET, OUTLINE_RESERVED_SPACE, PageIndicator, PageNumberTranslationContext, PaginatedDocxEditor, PaginatedDocxEditorShell, REVIEW_MARKERS_GUTTER, REVIEW_PANE_GUTTER, RULER_WIDTH, ReviewRailContext, Slot, TitleBar, TitleBarRight, Toolbar, ToolbarButton, ToolbarContext, ToolbarGroup, ToolbarImageProperties, VERSION, VerticalRuler, definePopup, editorStateActiveSubscriptionCount, isFieldLink, navigationPaneReservation, navigationShift, normalizeImageBytes, notificationYieldsToTask, useProvidedDocxEditor as provideDocxEditor, reviewGutter, useChromeTranslate, useContentControl, useContentControlInstance, useContentControlWidget, useContextMenuTarget, useDocumentOutline, useDocumentSearch, useDocxEditor, useDocxSource, useEditorCaret, useEditorCommand, useEditorEvent, useEditorSnapshot, useEditorState, useEditorValueCommand, useFontFamily, useFonts, useHeaderFooterState, useHighlightAt, useHighlights, useHistoryGroup, useHyperlinkPopup, useHyperlinkPopupInstance, useNavigationPane, useNavigationShift, useNotePropertiesState, useNoteScopeState, usePageSetup, usePageSetupDialog, useParagraphDialog, useParagraphFormat, useParagraphIndent, useParagraphStyle, useReviewAuthors, useReviewGutter, useScopeClassName, useScopedChromeAnchor, useTableBorderTargetLabel, useTextFormFieldDialog, useToolbarContext, useToolbarLabel, useToolbarLabelFor, useTranslation, useZoom };
4565
- export type { ChromeTranslate, ContentControlActionProps, ContentControlInspectorState, ContentControlLock, ContentControlPartProps, ContentControlProps, ContentControlSlotId, ContentControlWidgetDayProps, ContentControlWidgetEntry, ContentControlWidgetItemProps, ContentControlWidgetPictureProps, ContextMenuAnchor, ContextMenuCommandProps, ContextMenuContextValue, ContextMenuItemProps, ContextMenuTableRowProps, DialogCustomizationProps, DialogPartProps, DocxEditorAuthorStyleProps, DocxEditorChildren, DocxEditorContentControlNamespace, DocxEditorContentControlWidgetNamespace, DocxEditorContentControlWidgetPartProps, DocxEditorContentControlWidgetProps, DocxEditorContentProps, DocxEditorContextMenuNamespace, DocxEditorContextMenuProps, DocxEditorDocumentOutlineProps, DocxEditorExportDialogProps, DocxEditorFontNoticeProps, DocxEditorHeaderFooterChromeProps, DocxEditorHyperLinkNamespace, DocxEditorImageAltTextPopupProps, DocxEditorImagePropertiesDialogProps, DocxEditorInvalidTextFormFieldDialogProps, DocxEditorLoadingComponent, DocxEditorLoadingProps, DocxEditorLoadingSpinnerProps, DocxEditorMenuNamespace, DocxEditorMenuProps, DocxEditorNamespace, DocxEditorNavigationNamespace, DocxEditorNavigationProps, DocxEditorNotePreviewProps, DocxEditorNotePropertiesDialogProps, DocxEditorNotesChromeProps, DocxEditorNotesContextMenuProps, DocxEditorPageNumberProps, DocxEditorPageSetupDialogProps, DocxEditorParagraphDialogProps, DocxEditorPopup, DocxEditorPopups, DocxEditorPrintDialogProps, DocxEditorProps, DocxEditorRef, DocxEditorRootListeners, DocxEditorRootProps, DocxEditorRulerProps, DocxEditorTextFormFieldDialogProps, DocxEditorToolbarNamespace, DocxEditorToolbarProps, DocxEditorViewportProps, DocxFontOrigin, DocxFontsInput, DocxFontsSource, DocxSource, EditorCaret, EditorCommandState, EditorMode, EditorValueCommandState, FontFamilyItemProps, FontFamilyNamespace, FontFamilyPartProps, FontFamilyProps, FontsInput, HeaderFooterState, HorizontalRulerProps$1 as HorizontalRulerProps, HyperLinkActionProps, HyperLinkPartProps, HyperLinkProps, HyperlinkPopupAnchor, HyperlinkPopupMode, HyperlinkPopupState, ImagePropertiesTriggerProps, IndentUpdate, LocaleProviderProps, MaybeRefOrGetter, MenuActionProps, MenuGroupProps, MenuId, MenuItemProps, MenuPartComponent, MenuProps, MenuReportIssueProps, MenuReviewersProps, MenuRowProps, MenuSeparatorProps, MenuSubmenuProps, MenuTableGridProps, NavigationPartProps, NavigationShiftInput, NavigationTabProps, NavigationTab$1 as NavigationTabValue, NormalizedImagePayload, NotePropertiesState, OutlineHeading$1 as OutlineHeading, OutlineHeadingItem, PageIndicatorProps, PageSetupDialogFields, PageSetupUpdate, PaginatedDocxEditorExpose, PaginatedDocxEditorHandle, PaginatedDocxEditorProps, PaginatedDocxEditorShellProps, ParagraphStyleItemProps, ParagraphStyleNamespace, ParagraphStyleOption, ParagraphStylePartProps, ParagraphStyleProps, ProvideDocxEditorResult, ReviewGutter, ReviewGutterInput, ReviewRailRegistry, ScopedChromeAnchor, SlotProps, TableBorderColorNamespace, TableBorderStyleNamespace, TableBorderTargetNamespace, TableBorderWidthNamespace, TableCellFillNamespace, TableChromeItemProps, TableChromePartComponent, TableChromePartProps, TextFormFieldDialogFields, ToolbarActionProps, ToolbarAlignmentComponent, ToolbarButtonProps$1 as ToolbarButtonProps, ToolbarContextValue, ToolbarPartComponent, ToolbarPartProps, ToolbarProps, ToolbarReviewersProps, ToolbarSeparatorProps, ToolbarSlotPartComponent, ToolbarSlotPartProps, ToolbarTranslate, UseContentControlResult, UseContentControlWidgetResult, UseDialogReturn, UseDocumentOutlineResult, UseDocumentSearchOptions, UseDocumentSearchResult, UseDocxSourceOptions, UseDocxSourceResult, UseFontFamilyResult, UseHistoryGroupReturn, UseHyperlinkPopupResult, UseNavigationPaneOptions, UseNavigationPaneResult, UsePageSetupDialogReturn, UsePageSetupReturn, UseParagraphDialogReturn, UseParagraphFormatReturn, UseParagraphIndentReturn, UseParagraphStyleResult, UseTextFormFieldDialogReturn, UseZoomResult, VerticalRulerProps };
4927
+ export { CONTENT_CONTROL_SLOTS, ContextMenuCellVerticalAlignment, ContextMenuCopy, ContextMenuCopyFormatting, ContextMenuCut, ContextMenuDelete, ContextMenuDeleteTable, ContextMenuDeleteTableColumn, ContextMenuDeleteTableRow, ContextMenuInsertColumnLeft, ContextMenuInsertColumnRight, ContextMenuInsertRowAbove, ContextMenuInsertRowBelow, ContextMenuItem, ContextMenuPaste, ContextMenuPasteFormatting, ContextMenuPasteWithoutFormatting, ContextMenuRefreshToc, ContextMenuRefreshTocPageNumbers, ContextMenuSelectAll, DocumentName, DocumentOutline, DocxEditor, DocxEditorAuthorStyle, DocxEditorColorByChangeType, DocxEditorContent, DocxEditorContentControl, DocxEditorContentControlWidget, DocxEditorContextMenu, DocxEditorDocumentOutline, DocxEditorEquation, DocxEditorExportDialog, DocxEditorFontNotice, DocxEditorHeaderFooterChrome, DocxEditorHorizontalRuler, DocxEditorHyperLink, DocxEditorImageAltTextPopup, DocxEditorImagePropertiesDialog, DocxEditorInvalidTextFormFieldDialog, DocxEditorLoading, DocxEditorLoadingSpinner, DocxEditorMenu, DocxEditorNavigation, DocxEditorNotePreview, DocxEditorNotePropertiesDialog, DocxEditorNotesChrome, DocxEditorNotesContextMenu, DocxEditorPageNumber, DocxEditorPageSetupDialog, DocxEditorParagraphDialog, DocxEditorPrintDialog, DocxEditorRevisionMarkup, DocxEditorRevisionMarkupDialog, DocxEditorRoot, DocxEditorShell, DocxEditorTextFormFieldDialog, DocxEditorToolbar, DocxEditorVerticalRuler, DocxEditorViewport, HorizontalRuler, ImageAltText, ImageInsertProvider, ImageInsertTrigger, ImagePropertiesTrigger, ImageWrap, LocaleProvider, Logo, MenuBar, NAVIGATION_PANE_GAP, NAVIGATION_PANE_INSET, NAVIGATION_PANE_MIN_PAGE_ROOM, NAVIGATION_PANE_WIDTH, NavigationClose, NavigationFind, NavigationHeader, NavigationHeadings, NavigationTab, NavigationTabs, NavigationTitle, NavigationToggle, OUTLINE_BUTTON_LEFT_OFFSET, OUTLINE_BUTTON_RESERVED_SPACE, OUTLINE_LEFT_OFFSET, OUTLINE_RESERVED_SPACE, PageIndicator, PageNumberTranslationContext, PaginatedDocxEditor, PaginatedDocxEditorShell, REVIEW_MARKERS_GUTTER, REVIEW_PANE_GUTTER, RULER_WIDTH, ReviewRailContext, Slot, TitleBar, TitleBarRight, Toolbar, ToolbarButton, ToolbarContext, ToolbarGroup, ToolbarImageProperties, VERSION, VerticalRuler, definePopup, editorStateActiveSubscriptionCount, isFieldLink, navigationPaneOverlays, navigationPaneReservation, navigationShift, normalizeImageBytes, notificationYieldsToTask, useProvidedDocxEditor as provideDocxEditor, reviewGutter, useChromeTranslate, useContentControl, useContentControlInstance, useContentControlWidget, useContextMenuTarget, useDocumentOutline, useDocumentSearch, useDocxEditor, useDocxSource, useEditorCaret, useEditorCommand, useEditorEvent, useEditorSnapshot, useEditorState, useEditorValueCommand, useFontFamily, useFonts, useHeaderFooterState, useHighlightAt, useHighlights, useHistoryGroup, useHyperlinkPopup, useHyperlinkPopupInstance, useNavigationPane, useNavigationShift, useNotePropertiesState, useNoteScopeState, usePageSetup, usePageSetupDialog, useParagraphDialog, useParagraphFormat, useParagraphIndent, useParagraphStyle, useReviewAuthors, useReviewGutter, useRevisionMarkupDialog, useScopeClassName, useScopedChromeAnchor, useTableBorderTargetLabel, useTextFormFieldDialog, useToolbarContext, useToolbarLabel, useToolbarLabelFor, useTranslation, useZoom };
4928
+ export type { ChromeTranslate, ContentControlActionProps, ContentControlInspectorState, ContentControlLock, ContentControlPartProps, ContentControlProps, ContentControlSlotId, ContentControlWidgetDayProps, ContentControlWidgetEntry, ContentControlWidgetItemProps, ContentControlWidgetPictureProps, ContextMenuAnchor, ContextMenuCommandProps, ContextMenuContextValue, ContextMenuItemProps, ContextMenuTableRowProps, DialogCustomizationProps, DialogPartProps, DocxEditorAuthorStyleProps, DocxEditorChildren, DocxEditorContentControlNamespace, DocxEditorContentControlWidgetNamespace, DocxEditorContentControlWidgetPartProps, DocxEditorContentControlWidgetProps, DocxEditorContentProps, DocxEditorContextMenuNamespace, DocxEditorContextMenuProps, DocxEditorDocumentOutlineProps, DocxEditorExportDialogProps, DocxEditorFontNoticeProps, DocxEditorHeaderFooterChromeProps, DocxEditorHyperLinkNamespace, DocxEditorImageAltTextPopupProps, DocxEditorImagePropertiesDialogProps, DocxEditorInvalidTextFormFieldDialogProps, DocxEditorLoadingComponent, DocxEditorLoadingProps, DocxEditorLoadingSpinnerProps, DocxEditorMenuNamespace, DocxEditorMenuProps, DocxEditorNamespace, DocxEditorNavigationNamespace, DocxEditorNavigationProps, DocxEditorNotePreviewProps, DocxEditorNotePropertiesDialogProps, DocxEditorNotesChromeProps, DocxEditorNotesContextMenuProps, DocxEditorPageNumberProps, DocxEditorPageSetupDialogProps, DocxEditorParagraphDialogProps, DocxEditorPopup, DocxEditorPopups, DocxEditorPrintDialogProps, DocxEditorProps, DocxEditorRef, DocxEditorRevisionMarkupDialogProps, DocxEditorRevisionMarkupProps, DocxEditorRootListeners, DocxEditorRootProps, DocxEditorRulerProps, DocxEditorTextFormFieldDialogProps, DocxEditorToolbarGroupProps, DocxEditorToolbarNamespace, DocxEditorToolbarProps, DocxEditorToolbarSlotProps, DocxEditorViewportProps, DocxFontOrigin, DocxFontsInput, DocxFontsSource, DocxSource, EditorCaret, EditorCommandState, EditorMode, EditorValueCommandState, FontFamilyItemProps, FontFamilyNamespace, FontFamilyPartProps, FontFamilyProps, FontsInput, HeaderFooterState, HorizontalRulerProps$1 as HorizontalRulerProps, HyperLinkActionProps, HyperLinkPartProps, HyperLinkProps, HyperlinkPopupAnchor, HyperlinkPopupMode, HyperlinkPopupState, ImagePropertiesTriggerProps, IndentUpdate, LocaleProviderProps, MaybeRefOrGetter, MenuActionProps, MenuGroupProps, MenuId, MenuItemBaseProps, MenuItemProps, MenuPartComponent, MenuProps, MenuReportIssueProps, MenuReviewersProps, MenuRowProps, MenuSeparatorProps, MenuSubmenuBaseProps, MenuSubmenuProps, MenuTableGridProps, NavigationPartProps, NavigationShiftInput, NavigationTabProps, NavigationTab$1 as NavigationTabValue, NormalizedImagePayload, NotePropertiesState, OutlineHeading$1 as OutlineHeading, OutlineHeadingItem, PageIndicatorProps, PageSetupDialogFields, PageSetupUpdate, PaginatedDocxEditorExpose, PaginatedDocxEditorHandle, PaginatedDocxEditorProps, PaginatedDocxEditorShellProps, ParagraphStyleItemProps, ParagraphStyleNamespace, ParagraphStyleOption, ParagraphStylePartProps, ParagraphStyleProps, ProvideDocxEditorResult, ReviewGutter, ReviewGutterInput, ReviewRailRegistry, ScopedChromeAnchor, SlotProps, TableBorderColorNamespace, TableBorderStyleNamespace, TableBorderTargetNamespace, TableBorderWidthNamespace, TableCellFillNamespace, TableChromeItemProps, TableChromePartComponent, TableChromePartProps, TextFormFieldDialogFields, ToolbarActionProps, ToolbarAlignmentComponent, ToolbarButtonProps$1 as ToolbarButtonProps, ToolbarContextValue, ToolbarPartComponent, ToolbarPartProps, ToolbarProps, ToolbarReviewersProps, ToolbarSeparatorProps, ToolbarSlotPartComponent, ToolbarSlotPartProps, ToolbarTranslate, UseContentControlResult, UseContentControlWidgetResult, UseDialogReturn, UseDocumentOutlineResult, UseDocumentSearchOptions, UseDocumentSearchResult, UseDocxSourceOptions, UseDocxSourceResult, UseFontFamilyResult, UseHistoryGroupReturn, UseHyperlinkPopupResult, UseNavigationPaneOptions, UseNavigationPaneResult, UsePageSetupDialogReturn, UsePageSetupReturn, UseParagraphDialogReturn, UseParagraphFormatReturn, UseParagraphIndentReturn, UseParagraphStyleResult, UseRevisionMarkupDialogReturn, UseTextFormFieldDialogReturn, UseZoomResult, VerticalRulerProps };