Skip to content
SumOfficeSumOfficeSumOffice

DTO · Text and paragraphs

49 interfaces and 7 type aliases from the `api-edit.ts` module — text editing, paragraphs, lists, fonts, clipboard, and history.

49 interfaces and 7 type aliases — text editing, paragraphs, lists, fonts, clipboard, and history.

Contract module: api-edit.ts.

Other topics in this module: Text and paragraphs · Tables: structure · Tables: cells and formatting · Tables: placement on the page · Page setup and document structure · Objects and drawings · Fields, footnotes, and references.

Types on this page — 56

TypeAliasDeclaration · api-edit.ts

type MenuCommand =
| "open-docx"
| "editor-save-copy"
| "editor-reopen-saved-copy"
| "editor-open-user-copy-dialog"
| "editor-insert-date-time"
| "editor-select-all"
| "editor-copy"
| "editor-cut"
| "editor-history-undo"
| "editor-history-redo"
| "editor-format-subscript"
| "editor-format-superscript"
| "reload-current-docx"
| "toggle-left-panel"
| "toggle-right-panel"
| "hide-side-panels"
| "set-mode-print"
| "set-mode-paginate"
| "set-mode-report"
| "set-mode-review"
| "previous-page"
| "next-page"
| "zoom-in"
| "zoom-out"
| "zoom-reset"
| "view-fit-page-width"
| "view-fit-whole-page"
| "view-fit-multiple-pages"
| "view-draft-layout"
| "view-web-layout"
| "view-outline"
| "view-show-ruler"
| "view-hide-ruler"
| "view-scroll-horizontal"
| "view-smooth-scroll"
| "view-enter-full-screen-reading"
| "view-exit-full-screen-reading"
| "view-use-dark-mode"
| "view-focus-mode"
| "view-show-object-guides"
| "view-split-view"
| "view-restore-state"
| "nav-place-caret-by-click"
| "nav-caret-left"
| "nav-caret-right"
| "nav-caret-up"
| "nav-caret-down"
| "nav-word-previous"
| "nav-word-next"
| "nav-line-start"
| "nav-line-end"
| "nav-paragraph-start"
| "nav-paragraph-end"
| "nav-document-start"
| "nav-document-end"
| "nav-previous-page"
| "nav-next-page"
| "nav-search-previous"
| "nav-search-next"
| "nav-heading-next"
| "nav-bookmark-next"
| "nav-footnote-next"
| "nav-endnote-next"
| "nav-comment-anchor-next"
| "nav-table-cell-next"
| "nav-inline-object-next"
| "nav-floating-object-next"
| "nav-return-last-edit-point";

TypeAliasDeclaration · api-edit.ts

type SystemPastePayload = {
schema: "fastdoc.native-clipboard.v1";
text: string;
html: string;
rtf: string;
imagePngBase64: string | null;
imagePath?: string | null;
files: string[];
internalJson: string | null;
forcePlain: boolean;
selectedFormat: "fastdoc-rich" | "rtf" | "html" | "image" | "files" | "plain-text" | "empty" | "rejected";
availableFormats: string[];
priority: readonly [
"fastdoc-rich",
"html",
"rtf",
"image",
"files",
"plain-text"
];
fingerprint: string;
totalBytes: number;
rejectionReasons: string[];
};

InterfaceDeclaration · api-edit.ts

interface ShellObservedBreak {
break_kind: string;
location: string;
detail: string;
}

InterfaceDeclaration · api-edit.ts

interface ShellReportSnapshot {
stage_id: string;
part_count: number;
relationship_count: number;
detected_features?: ShellDetectedFeature[];
relationships?: ShellRelationshipSnapshot[];
support_state_counts?: Record<string, number>;
}

InterfaceDeclaration · api-edit.ts

interface ShellFixtureOption {
key: string;
label: string;
path: string;
description: string;
}

InterfaceDeclaration · api-edit.ts

interface ShellParagraphTabStop {
alignment: string;
position_twips: number;
leader?: string | null;
source: string;
text?: string;
width_milli_px?: number;
}

InterfaceDeclaration · api-edit.ts

interface ShellComposedLineFragment {
text: string;
width_milli_px: number;
}

InterfaceDeclaration · api-edit.ts

interface ShellComposedParagraphLine {
text: string;
fragments: ShellComposedLineFragment[];
}

InterfaceDeclaration · api-edit.ts

interface ShellComposedParagraph {
paragraph_index: number;
paragraph_location: string;
text: string;
available_width_milli_px: number;
line_break_mode: string;
drop_cap_kind?: string | null;
alignment_mode?: string | null;
tab_run_count: number;
tab_stops: ShellParagraphTabStop[];
default_tab_stop_twips?: number | null;
first_line_indent_twips?: number | null;
left_indent_twips?: number | null;
right_indent_twips?: number | null;
spacing_before_twips?: number | null;
spacing_after_twips?: number | null;
line_spacing_twips?: number | null;
line_spacing_rule?: string | null;
fill_color_rgb?: string | null;
keep_with_next?: boolean;
keep_lines_together?: boolean;
widow_control?: boolean;
page_break_before?: boolean;
blocked_reason?: string | null;
lines?: ShellComposedParagraphLine[];
support_markers?: ShellSupportMarker[];
}

InterfaceDeclaration · api-edit.ts

interface ShellParagraphCompositionSnapshot {
model_version: string;
stage_id: string;
stage_name: string;
line_break_mode: string;
width_source: string;
paragraph_count: number;
non_empty_paragraph_count: number;
composed_paragraph_count: number;
blocked_paragraph_count: number;
line_count: number;
support_marker_count: number;
paragraphs: ShellComposedParagraph[];
support_markers?: ShellSupportMarker[];
}

InterfaceDeclaration · api-edit.ts

interface BoundedLiveTextInsertRequest {
documentPath?: string | null;
sourcePath?: string | null;
saveAsOwnershipReservationId?: string | null;
paragraphIndex: number;
offset: number;
text?: string;
insertText?: string;
structuredCommentAnchorTargetText?: string;
semanticBoundaryAffinity?: "before" | "after";
semanticBoundaryNoteId?: number;
deleteCount?: number;
persistentEdit?: OptimisticEditRequest;
canonicalTransitionKind?: "typing" | "replacement" | "paste" | "ime" | "format";
canonicalBeforeCaretSlotIndex?: number;
canonicalAfterCaretSlotIndex?: number;
canonicalProjectionPageIndex?: number;
canonicalProjectionRefresh?: "full";
canonicalAutocorrect?: {
kind: "user-replacement" | "built-in-replacement" | "sentence-start" | "caps-lock" | "smart-quote" | "hyphen-to-dash" | "ordinal" | "common-symbol" | "hyperlink" | "bullet-list" | "numbered-list" | "border-line";
rawText: string;
correctedText: string;
};
trackRevisions?: boolean;
noTextMutation?: boolean;
reopenAfterWrite?: boolean;
outputKind?:
| "live-bounded-text-continue"
| "editor-v0-text-continue"
| "editor-v0-txt001-collapsed-typing"
| "editor-v0-txt003-delete-previous-character"
| "editor-v0-txt007-split-paragraph"
| "editor-v0-txt008-join-paragraphs"
| "editor-v0-txt009-insert-soft-line-break"
| "editor-v0-txt010-insert-non-breaking-space"
| "editor-v0-txt011-insert-non-breaking-hyphen"
| "editor-v0-txt012-insert-optional-hyphen"
| "editor-v0-text-continue-commands"
| "editor-v0-undo"
| "editor-v0-redo"
| "editor-v0-save-as-dialog"
| "editor-v0-save-state"
| "editor-v0-nonblocking-typing"
| "editor-v0-double-space-period-autocorrect"
| "editor-v0-selection-replace"
| "editor-v0-selection-edit-2"
| "editor-v0-selection-edit-3";
// …list truncated: first 20 shown, 245 values total
pasteStyleStrategy?: "inherit-start" | "plain" | "source";
pasteStyleSegments?: Array<{
offset: number;
length: number;
bold: boolean;
italic: boolean;
colorRgb: string | null;
underline?: string | null;
fontFamilyName?: string | null;
fontSizeHalfPoints?: number | null;
}> | null;
pasteParagraphLayout?: {
alignment: "left" | "center" | "right" | "both";
leftIndentTwips: number;
firstLineIndentTwips?: number | null;
rightIndentTwips?: number | null;
tabStops?: Array<{
alignment: "left" | "center" | "right" | "decimal" | "bar";
positionTwips: number;
leader?: "dot" | "hyphen" | "underscore" | "middleDot" | "heavy" | null;
}>;
spacingBeforeTwips?: number | null;
spacingAfterTwips: number;
lineSpacingTwips: number;
numbering?: {
kind?: "decimal" | "bullet";
numId: number;
ilvl: number;
start: number;
numFormat: "decimal" | "bullet";
levelText: "%1." | "•";
} | null;
} | null;
pasteParagraphStyle?: "Normal" | "Heading1" | "Heading2" | "Heading3" | null;
pasteParagraphDirection?: "ltr" | "rtl" | null;
pasteHyperlinks?: Array<{
offset: number;
length: number;
url: string;
}> | null;
pasteParagraphBorder?: "box-single" | null;
pasteSectionPageMargins?: {
topMarginTwips: number;
rightMarginTwips: number;
bottomMarginTwips: number;
leftMarginTwips: number;
} | null;
saveAsPath?: string | null;
operationKind?: "delete-multiparagraph-range";
endParagraphIndex?: number;
endOffset?: number;
}

TypeAliasDeclaration · api-edit.ts

type EditorV0InsertBreakKind = "line-break" | "page-break" | "column-break" | "section-break-next-page" | "section-break-continuous" | "section-break-even-page" | "section-break-odd-page";

TypeAliasDeclaration · api-edit.ts

type EditorV0InsertDropCapKind = "none" | "drop" | "margin";

InterfaceDeclaration · api-edit.ts

interface EditorV0InsertBreakRequest {
breakKind: EditorV0InsertBreakKind;
paragraphIndex: number;
offset?: number | null;
deleteCount?: number | null;
reopenAfterWrite?: boolean;
sourcePath?: string | null;
outputPath?: string | null;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0InsertDropCapRequest {
dropCapKind: EditorV0InsertDropCapKind;
paragraphIndex: number;
reopenAfterWrite?: boolean;
outputPath?: string | null;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0InsertBreakResult {
schema: "fastdoc.shell.editor-v0-insert-break-action.v1";
operationKind: "insert-line-break" | "delete-line-break" | "insert-page-break" | "insert-column-break" | "insert-section-break";
breakKind: EditorV0InsertBreakKind;
applied: boolean;
documentPath: string | null;
outputPath: string | null;
paragraphIndex: number;
offset: number | null;
deleteCount: number;
resultKind: string | null;
writebackResultKind: string | null;
snapshot: unknown;
popupWarningShown: false;
technicalPanelAdded: false;
wordParityClaim: false;
pixelParityClaim: false;
}

TypeAliasDeclaration · api-edit.ts

type EditorV0AddTextLevel = "none" | "1" | "2" | "3";

InterfaceDeclaration · api-edit.ts

interface EditorV0AddTextRequest {
paragraphIndex: number;
level: EditorV0AddTextLevel;
reopenAfterWrite?: boolean;
outputPath?: string | null;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0InsertDropCapResult {
schema: "fastdoc.shell.editor-v0-insert-drop-cap-action.v1";
operationKind: "set-paragraph-drop-cap";
applied: boolean;
documentPath: string | null;
outputPath: string | null;
paragraphIndex: number;
dropCapKind: EditorV0InsertDropCapKind;
resultKind: string | null;
writebackResultKind: string | null;
writebackChangedPartCount: number | null;
snapshot: unknown;
popupWarningShown: false;
technicalPanelAdded: false;
wordParityClaim: false;
pixelParityClaim: false;
muscleMemoryParityClaim: false;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0AddTextResult {
schema: "fastdoc.shell.editor-v0-add-text-action.v1";
operationKind: "set-toc-entry-level";
applied: boolean;
documentPath: string | null;
outputPath: string | null;
paragraphIndex: number;
level: EditorV0AddTextLevel;
resultKind: string | null;
writebackResultKind: string | null;
writebackChangedPartCount: number | null;
snapshot: unknown;
popupWarningShown: false;
technicalPanelAdded: false;
wordParityClaim: false;
pixelParityClaim: false;
muscleMemoryParityClaim: false;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0ParagraphStructureRequest {
operationKind: "insert-text" | "delete-text" | "split-paragraph" | "merge-with-next" | "insert-line-break" | "delete-line-break" | "replace-table-cell-range";
target?: EditorV0TableCellParagraphTextTarget | null;
range?: {
anchor: EditorV0TableCellTextRangeEndpoint;
focus: EditorV0TableCellTextRangeEndpoint;
} | null;
paragraphIndex: number;
offset?: number | null;
insertText?: string | null;
replacementText?: string | null;
deleteCount?: number | null;
sourcePath?: string | null;
outputKind?:
| "editor-v0-paragraph-split-merge"
| "d37-table-cell-text-structure"
| "editor-v0-paragraph-text-flow"
| "editor-v0-paragraph-text-flow-commands"
| "editor-v0-styled-paragraph-flow"
| "editor-v0-styled-paragraph-merge-controls"
| "editor-v0-styled-paragraph-text-after-merge"
| "editor-v0-paragraph-boundary-insert"
| "editor-v0-paragraph-boundary-delete-controls"
| "editor-v0-user-paragraph-boundary-edit"
| "editor-v0-user-paragraph-multiline-flow"
| "doc-br-001-manual-line-break"
| "editor-v0-styled-multiline-boundary-edit"
| "editor-v0-styled-multiline-live-toolbar-state"
| "editor-v0-styled-multiline-second-fixture"
| "editor-v0-toolbar-format-commands-bounded"
| "editor-v0-bold-shortcut-command"
| "editor-v0-toolbar-format-commands-italic-blue"
| "editor-v0-home-chr-tranche2-market"
| "editor-v0-font-family-size-commands";
// …list truncated: first 20 shown, 248 values total
outputPath?: string | null;
reopenAfterWrite?: boolean;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0ParagraphStructureResult {
applied: boolean;
outputPath: string;
operationKind: "insert-text" | "delete-text" | "split-paragraph" | "merge-with-next" | "insert-line-break" | "delete-line-break" | "replace-table-cell-range";
paragraphIndex: number;
offset: number | null;
beforeTexts: string[];
afterTexts: string[];
paragraphCountDelta: number | null;
undoDelta: unknown | null;
undoDeltas?: unknown[];
finalTarget?: EditorV0TableCellParagraphTextTarget | null;
finalOffset?: number | null;
selectionSemantics?: string | null;
selectedCellCount?: number | null;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0ToolbarFormatCommandRequest {
commandKind:
| "bold"
| "italic"
| "underline"
| "underline-color"
| "blue"
| "highlight"
| "strikethrough"
| "double-strikethrough"
| "subscript"
| "superscript"
| "font-family"
| "font-size"
| "text-case"
| "all-caps"
| "small-caps"
| "hidden"
| "text-effect"
| "character-spacing"
| "character-scale"
| "character-position"
| "kerning"
| "character-style"
| "proofing-language"
| "run-direction"
| "paragraph-direction"
| "disable-proofing";
enabled: boolean;
fontFamilyName?: string | null;
fontSizeHalfPoints?: number | null;
textCase?: "sentence" | "lowercase" | "uppercase" | "capitalize" | "toggle" | null;
underlineStyle?: "single" | "double" | "dotted" | "dash" | "wave" | "thick" | null;
fontColorRgb?: string | null;
underlineColorRgb?: string | null;
textHighlightColor?: string | null;
characterSpacing?: "normal" | "expanded" | "condensed" | null;
textEffect?: "none" | "outline" | "shadow" | "emboss" | "imprint" | null;
characterScale?: "normal" | "80pct" | null;
characterPosition?: "normal" | "raised-3pt" | "lowered-3pt" | null;
kerning?: "none" | "12pt" | null;
characterStyle?: "none" | "Emphasis" | "Strong" | "Hyperlink" | null;
proofingLanguage?: "en-US" | "es-ES" | "ru-RU" | "ar-SA" | "he-IL" | "ja-JP" | "zh-CN" | "ko-KR" | null;
textDirection?: "ltr" | "rtl" | null;
disableProofing?: boolean | null;
paragraphIndex: number;
offset: number;
rangeLength: number;
expectedParagraphText?: string | null;
outputKind?:
| "editor-v0-toolbar-format-commands-bounded"
| "editor-v0-toolbar-format-commands-italic-blue"
| "editor-v0-home-chr-tranche2-market"
| "editor-v0-user-text-format-command"
| "editor-v0-font-family-size-commands"
| "editor-v0-home-character-formatting-market"
| "editor-v0-home-color-highlight-market"
| "editor-v0-text-case-toolbar-command"
| "editor-v0-text-effect-toolbar-command"
| "editor-v0-underline-style-toolbar-command"
| "editor-v0-font-dialog-font-market"
| "editor-v0-font-dialog-advanced-market"
| "editor-v0-highlight-toolbar-command"
| "editor-v0-font-color-toolbar-command"
| "editor-v0-format-toolbar-multi-command-chain"
| "editor-v0-format-clear-command"
| "editor-v0-format-clear-partial-selection"
| "editor-v0-format-apply-partial-selection"
| "editor-v0-mixed-format-selection-workflow"
| "editor-v0-mixed-format-clear-or-paste-rules"
| "editor-v0-selection-consumes-paragraph-granularity-format"
| "editor-v0-user-created-multiparagraph-source-paste"
| "editor-v0-cut-clear-paste-target-index-expansion"
| "editor-v0-cut-clear-paste-target-toolbar-state"
| "editor-v0-wide-target-keyboard-toolbar-state"
| "editor-v0-keyboard-wide-target-action-chain"
| "editor-v0-keyboard-wide-target-manual-ux"
| "editor-v0-keyboard-wide-target-manual-commands-richer-content"
| "editor-v0-wrap-aware-selection-commands"
| "editor-v0-wrap-aware-selection-manual-commands-polish"
| "editor-v0-wrap-aware-paragraph-editing"
| "editor-v0-wrap-aware-paragraph-manual-ux"
| "editor-v0-wrap-aware-paragraph-commands-polish"
| "editor-v0-wrap-aware-paragraph-reflow-polish";
outputPath?: string | null;
reopenAfterWrite?: boolean;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0ToolbarFormatCommandResult {
applied: boolean;
outputPath: string;
commandKind:
| "bold"
| "italic"
| "underline"
| "underline-color"
| "blue"
| "highlight"
| "strikethrough"
| "double-strikethrough"
| "subscript"
| "superscript"
| "font-family"
| "font-size"
| "text-case"
| "all-caps"
| "small-caps"
| "hidden"
| "text-effect"
| "character-spacing"
| "character-scale"
| "character-position"
| "kerning"
| "character-style"
| "proofing-language"
| "run-direction"
| "paragraph-direction"
| "disable-proofing";
enabled: boolean;
fontFamilyName?: string | null;
fontSizeHalfPoints?: number | null;
textCase?: "sentence" | "lowercase" | "uppercase" | "capitalize" | "toggle" | null;
underlineStyle?: "single" | "double" | "dotted" | "dash" | "wave" | "thick" | null;
fontColorRgb?: string | null;
underlineColorRgb?: string | null;
textHighlightColor?: string | null;
characterSpacing?: "normal" | "expanded" | "condensed" | null;
textEffect?: "none" | "outline" | "shadow" | "emboss" | "imprint" | null;
characterScale?: "normal" | "80pct" | null;
characterPosition?: "normal" | "raised-3pt" | "lowered-3pt" | null;
kerning?: "none" | "12pt" | null;
characterStyle?: "none" | "Emphasis" | "Strong" | "Hyperlink" | null;
proofingLanguage?: "en-US" | "es-ES" | "ru-RU" | "ar-SA" | "he-IL" | "ja-JP" | "zh-CN" | "ko-KR" | null;
textDirection?: "ltr" | "rtl" | null;
disableProofing?: boolean | null;
paragraphIndex: number;
offset: number;
rangeLength: number;
beforeTexts: string[];
afterTexts: string[];
disabledReason?: "no-current-document" | "unsupported-document" | null;
resultKind?: "applied" | "no-current-document" | "unsupported-document";
writebackResultKind?: "written" | "not-requested";
popupWarningShown?: false;
shellCoordinateChange?: false;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0ToolbarFormatBatchCommandRequest {
commands: EditorV0ToolbarFormatCommandRequest[];
reopenAfterWrite?: boolean;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0ToolbarFormatBatchCommandResult {
applied: boolean;
outputPath: string;
commandKinds: EditorV0ToolbarFormatCommandRequest["commandKind"][];
commandCount: number;
paragraphIndex: number;
offset: number;
rangeLength: number;
beforeTexts: string[];
afterTexts: string[];
disabledReason?: "no-current-document" | "unsupported-document" | null;
resultKind?: "applied" | "no-current-document" | "unsupported-document";
writebackResultKind?: "written" | "not-requested";
popupWarningShown?: false;
shellCoordinateChange?: false;
oneOkOneReopenBatchRoute: boolean;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0ParagraphLayoutCommandRequest {
alignment: "left" | "center" | "right" | "both";
leftIndentTwips: number;
firstLineIndentTwips?: number | null;
rightIndentTwips?: number | null;
tabStops?: Array<{
alignment: "left" | "center" | "right" | "decimal" | "bar";
positionTwips: number;
leader?: "dot" | "hyphen" | "underscore" | "middleDot" | "heavy" | null;
}>;
spacingBeforeTwips?: number | null;
spacingAfterTwips: number;
lineSpacingTwips: number;
setNumberingDecimalLevel0?: boolean;
setNumberingBulletLevel0?: boolean;
setNumberingMultilevelLevel1?: boolean;
setNumberingRestartDecimalLevel0?: boolean;
styleId?: "Heading1" | "Heading2" | "Heading3" | "Normal" | null;
paragraphIndex: number;
outputKind?:
| "editor-v0-paragraph-layout-basics"
| "editor-v0-style-heading1-toolbar-command"
| "editor-v0-style-heading2-toolbar-command"
| "editor-v0-style-heading3-toolbar-command"
| "editor-v0-style-normal-card-action"
| "editor-v0-quick-access-more-menu"
| "editor-v0-quick-print-action"
| "editor-v0-paragraph-alignment-toolbar-command"
| "editor-v0-paragraph-indent-toolbar-command"
| "editor-v0-paragraph-line-spacing-toolbar-command"
| "editor-v0-paragraph-numbering-toolbar-command"
| "editor-v0-paragraph-bullets-toolbar-command"
| "editor-v0-paragraph-multilevel-toolbar-command"
| "editor-v0-ruler-drag-writeback";
rulerDragRole?: "paragraph-left-indent" | "paragraph-hanging-indent" | "paragraph-first-line-indent" | "paragraph-right-indent" | "tab-stop" | null;
outputPath?: string | null;
reopenAfterWrite?: boolean;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0ParagraphLayoutCommandResult {
applied: boolean;
outputPath: string;
bulkCommandCount?: number;
alignment: "left" | "center" | "right" | "both";
leftIndentTwips: number;
firstLineIndentTwips?: number | null;
rightIndentTwips?: number | null;
tabStops?: Array<{
alignment: "left" | "center" | "right" | "decimal" | "bar";
positionTwips: number;
leader?: "dot" | "hyphen" | "underscore" | "middleDot" | "heavy" | null;
}>;
spacingBeforeTwips?: number | null;
spacingAfterTwips: number;
lineSpacingTwips: number;
setNumberingDecimalLevel0?: boolean;
setNumberingBulletLevel0?: boolean;
setNumberingMultilevelLevel1?: boolean;
setNumberingRestartDecimalLevel0?: boolean;
styleId?: "Heading1" | "Heading2" | "Heading3" | "Normal" | null;
paragraphIndex: number;
beforeTexts: string[];
afterTexts: string[];
}

InterfaceDeclaration · api-edit.ts

interface EditorV0UpdateStyleFromSelectionRequest {
styleId: "FastDocWritingHeading";
styleName: "FastDoc Writing Heading";
paragraphIndexes: number[];
outputPath?: string | null;
reopenAfterWrite?: boolean;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0UpdateStyleFromSelectionResult {
schema: "fastdoc.shell.editor-v0-update-style-from-selection-action.v1";
operationKind: "update-style-from-selection";
applied: boolean;
documentPath: string;
outputPath: string;
styleId: "FastDocWritingHeading";
styleName: "FastDoc Writing Heading";
paragraphIndexes: number[];
beforeTexts: string[];
afterTexts: string[];
modifiedStylesXml: true;
appliedParagraphStyleRefs: true;
popupWarningShown: false;
technicalPanelAdded: false;
wordParityClaim: false;
pixelParityClaim: false;
muscleMemoryParityClaim: false;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0HomeCharacterFormat {
bold: boolean;
italic: boolean;
underline: boolean;
colorRgb: string | null;
fontFamily: string | null;
fontSizeHalfPoints: number | null;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0HomeTabStop {
positionTwips: number;
alignment: "left" | "center" | "right" | "decimal" | "bar" | "num" | "clear";
leader: "none" | "dot" | "hyphen" | "underscore" | "heavy" | "middle-dot";
}

InterfaceDeclaration · api-edit.ts

interface EditorV0HomeParagraphFormat {
alignment: "left" | "center" | "right" | "both" | "distribute";
leftIndentTwips: number;
rightIndentTwips: number;
specialIndent: "none" | "first-line" | "hanging";
specialIndentTwips: number;
spacingBeforeTwips: number;
spacingAfterTwips: number;
lineSpacingMode: "single" | "one-and-half" | "double" | "multiple" | "exact" | "at-least";
lineSpacingValue: number;
outlineLevel: number | null;
collapsedByDefault: boolean;
mirrorIndents: boolean;
adjustRightIndentToGrid: boolean;
contextualSpacing: boolean;
snapToGrid: boolean;
keepWithNext: boolean;
keepLinesTogether: boolean;
widowControl: boolean;
pageBreakBefore: boolean;
suppressLineNumbers: boolean;
suppressAutoHyphens: boolean;
textboxTightWrap: "none" | "allLines" | "firstAndLastLine" | "firstLineOnly" | "lastLineOnly";
kinsoku: boolean;
allowEnglishMidWordWrap: boolean;
overflowPunctuation: boolean;
topLinePunctuation: boolean;
autoSpaceEastAsianLatin: boolean;
autoSpaceEastAsianNumbers: boolean;
textAlignment: "auto" | "top" | "center" | "baseline" | "bottom";
tabStops: EditorV0HomeTabStop[];
}

InterfaceDeclaration · api-edit.ts

interface EditorV0HomeStyleFormat {
paragraph: EditorV0HomeParagraphFormat;
character: EditorV0HomeCharacterFormat;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0HomeStyleDefinition {
styleId: string;
name: string;
styleType: string;
basedOn: string | null;
nextStyle: string | null;
custom: boolean;
builtIn: boolean;
isDefault: boolean;
format: EditorV0HomeStyleFormat;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0HomeParagraphState {
paragraphIndex: number;
text: string;
styleId: string;
hasNumbering: boolean;
format: EditorV0HomeParagraphFormat;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0HomeFormattingSnapshot {
schema: "fastdoc.home-formatting-state.v1";
defaultTabStopTwips: number;
styles: EditorV0HomeStyleDefinition[];
paragraphs: EditorV0HomeParagraphState[];
}

TypeAliasDeclaration · api-edit.ts

type EditorV0HomeFormattingOperation = {
kind: "createStyle";
styleId: string;
name: string;
basedOn: string;
nextStyle: string;
sourceParagraphIndex: number;
paragraphIndexes: number[];
} | {
kind: "modifyStyle";
styleId: string;
name: string;
basedOn: string;
nextStyle: string;
format: EditorV0HomeStyleFormat;
} | {
kind: "updateStyleFromSelection";
styleId: string;
sourceParagraphIndex: number;
} | {
kind: "renameStyle";
styleId: string;
newName: string;
} | {
kind: "deleteStyle";
styleId: string;
fallbackStyleId: string | null;
} | {
kind: "applyStyle";
styleId: string;
paragraphIndexes: number[];
} | {
kind: "formatParagraphs";
paragraphIndexes: number[];
format: EditorV0HomeParagraphFormat;
} | {
kind: "setDefaultTabStop";
defaultTabStopTwips: number;
} | {
kind: "clearParagraphFormatting";
paragraphIndexes: number[];
};

InterfaceDeclaration · api-edit.ts

interface EditorV0HomeFormattingRequest {
operations: EditorV0HomeFormattingOperation[];
outputPath?: string | null;
reopenAfterWrite?: boolean;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0HomeFormattingResult {
schema: "fastdoc.shell.home-formatting.v1";
applied: true;
documentPath: string;
outputPath: string;
operationCount: number;
resultKind: "applied";
writebackResultKind: "written";
changedParts: string[];
sourceUnchanged: true;
state: EditorV0HomeFormattingSnapshot;
}

EditorV0ParagraphLayoutBatchCommandRequest

Section titled “EditorV0ParagraphLayoutBatchCommandRequest”

InterfaceDeclaration · api-edit.ts

interface EditorV0ParagraphLayoutBatchCommandRequest {
commands: EditorV0ParagraphLayoutCommandRequest[];
reopenAfterWrite?: boolean;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0ParagraphLayoutBatchCommandResult {
applied: boolean;
outputPath: string;
paragraphIndexes: number[];
commandCount: number;
beforeTexts: string[];
afterTexts: string[];
}

InterfaceDeclaration · api-edit.ts

interface EditorV0ParagraphFillCommandRequest {
paragraphIndex: number;
fillColorRgb: string;
outputPath?: string | null;
reopenAfterWrite?: boolean;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0ParagraphFillCommandResult {
applied: boolean;
outputPath: string;
fillColorRgb: string;
paragraphIndex: number;
beforeTexts: string[];
afterTexts: string[];
}

InterfaceDeclaration · api-edit.ts

interface EditorV0ParagraphBorderCommandRequest {
paragraphIndex: number;
borderColorRgb: string;
outputPath?: string | null;
reopenAfterWrite?: boolean;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0ParagraphBorderCommandResult {
applied: boolean;
outputPath: string;
borderColorRgb: string;
paragraphIndex: number;
beforeTexts: string[];
afterTexts: string[];
}

InterfaceDeclaration · api-edit.ts

interface EditorV0ParagraphSortCommandRequest {
startParagraphIndex: number;
paragraphCount: number;
outputPath?: string | null;
reopenAfterWrite?: boolean;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0ParagraphSortCommandResult {
applied: boolean;
outputPath: string;
startParagraphIndex: number;
paragraphCount: number;
beforeTexts: string[];
sortedTexts: string[];
afterTexts: string[];
resultKind: "applied" | "already-sorted" | "invalid-range";
writebackResultKind: "written" | "not-requested";
}

InterfaceDeclaration · api-edit.ts

interface BoundedLiveTextInsertResult {
applied: boolean;
versionHistoryOwnership?: SaveAsOwnershipCommitReceipt;
outputPath: string;
paragraphIndex: number;
insertedText: string;
deletedCount?: number;
nextCaretSlotIndex: number;
beforeText: string | null;
afterText: string | null;
afterTexts?: string[] | null;
canonicalOwnerAfter?: {
documentId: string;
sessionId: string;
acceptedRevision: number;
selectionRevision: number;
};
persistentReceipt?: AcceptedEditTerminal;
persistentCheckpoint?: {
schema: "fastdoc.persistent-save-checkpoint-receipt.v1";
sessionId: string;
documentId: string;
requestId: string;
acceptedRevision: number;
publishedRevision: number;
publishedModelHash: string;
targetHashBefore: string | null;
targetHash: string;
targetIdentity: PublishedTargetIdentity;
terminalResult: "published" | "unchanged";
physicalDocxWrites: 0 | 1;
versionHistoryOwnership: SaveAsOwnershipCommitReceipt | null;
};
inheritedStyle: {
fontFamilyName: string | null;
fontSizeHalfPoints: number | null;
fontBold: boolean | null;
fontItalic: boolean | null;
fontColorRgb: string | null;
fontUnderline: string | null;
};
}

TypeAliasDeclaration · api-edit.ts

type BoundedLiveTextMutationResult = Omit<BoundedLiveTextInsertResult, "afterText"> & {
afterText: string;
};

InterfaceDeclaration · api-edit.ts

interface EditorV0EditingReplaceFirstRequest {
paragraphIndex: number;
findText: string;
replaceText: string;
offset?: number | null;
deleteCount?: number | null;
matchedText?: string | null;
matchCountBefore?: number | null;
matchCase?: boolean;
wholeWord?: boolean;
storyAware?: boolean;
sourceStory?: "body" | "table" | "header" | "footer" | "footnote" | "endnote" | "comment";
sourcePartName?: string | null;
sourcePartMatchIndex?: number | null;
outputPath?: string | null;
reopenAfterWrite?: boolean;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0EditingReplaceFirstResult {
schema: "fastdoc.shell.editor-v0-editing-replace-first-command.v1";
applied: boolean;
outputPath: string;
paragraphIndex: number;
findText: string;
replaceText: string;
beforeTexts: string[];
afterTexts: string[];
resultKind: "applied" | "not-found" | "unsupported-document" | "no-current-document" | "blocked-protected";
writebackResultKind: "written" | "not-requested" | "blocked";
matchCountBefore: number;
matchCountAfter: number;
offset?: number | null;
deleteCount?: number | null;
matchedText?: string | null;
matchCase?: boolean;
wholeWord?: boolean;
operationKind?: string;
deleteResultKind?: string | null;
insertResultKind?: string | null;
reopenedDocumentPath: string | null;
popupWarningShown: false;
technicalPanelAdded: false;
wordParityClaim: false;
pixelParityClaim: false;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0EditingReplaceAllRequest {
findText: string;
replaceText: string;
matchCountBefore?: number | null;
matchCase?: boolean;
wholeWord?: boolean;
storyAware?: boolean;
outputPath?: string | null;
reopenAfterWrite?: boolean;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0EditingReplaceAllSemanticRange {
offset: number;
deleteCount: number;
matchedText: string;
}

InterfaceDeclaration · api-edit.ts

interface EditorV0EditingReplaceAllParagraphResult {
paragraphIndex: number;
matchCountBefore: number;
remainingFindMatchCount: number;
replacementMatchCountAfter: number;
beforeText: string;
afterText: string;
resultKind: string;
writebackResultKind: string;
normalizationDetail: string | null;
operationKind?: string;
rangeCount?: number;
ranges?: EditorV0EditingReplaceAllSemanticRange[];
}

InterfaceDeclaration · api-edit.ts

interface EditorV0EditingReplaceAllResult {
schema: "fastdoc.shell.editor-v0-editing-replace-all-command.v1";
applied: boolean;
outputPath: string;
paragraphIndexes: number[];
findText: string;
replaceText: string;
beforeTexts: string[];
afterTexts: string[];
resultKind: "applied" | "not-found" | "unsupported-document" | "no-current-document" | "blocked-protected";
writebackResultKind: "written" | "not-requested" | "blocked";
matchCountBefore: number;
matchCountAfter: number;
remainingFindMatchCount: number;
replacementMatchCountAfter: number;
paragraphResults: EditorV0EditingReplaceAllParagraphResult[];
matchCase?: boolean;
wholeWord?: boolean;
operationKind?: string;
rangeCount?: number;
rangeWritebackStepCount?: number;
rangeStepResultKinds?: string[];
reopenedDocumentPath: string | null;
popupWarningShown: false;
technicalPanelAdded: false;
wordParityClaim: false;
pixelParityClaim: false;
}

Documentation assistant

Answers are assembled from the documentation and may be inaccurate — check the sources.