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
MenuCommandSystemPastePayloadShellObservedBreakShellReportSnapshotShellFixtureOptionShellParagraphTabStopShellComposedLineFragmentShellComposedParagraphLineShellComposedParagraphShellParagraphCompositionSnapshotBoundedLiveTextInsertRequestEditorV0InsertBreakKindEditorV0InsertDropCapKindEditorV0InsertBreakRequestEditorV0InsertDropCapRequestEditorV0InsertBreakResultEditorV0AddTextLevelEditorV0AddTextRequestEditorV0InsertDropCapResultEditorV0AddTextResultEditorV0ParagraphStructureRequestEditorV0ParagraphStructureResultEditorV0ToolbarFormatCommandRequestEditorV0ToolbarFormatCommandResultEditorV0ToolbarFormatBatchCommandRequestEditorV0ToolbarFormatBatchCommandResultEditorV0ParagraphLayoutCommandRequestEditorV0ParagraphLayoutCommandResultEditorV0UpdateStyleFromSelectionRequestEditorV0UpdateStyleFromSelectionResultEditorV0HomeCharacterFormatEditorV0HomeTabStopEditorV0HomeParagraphFormatEditorV0HomeStyleFormatEditorV0HomeStyleDefinitionEditorV0HomeParagraphStateEditorV0HomeFormattingSnapshotEditorV0HomeFormattingOperationEditorV0HomeFormattingRequestEditorV0HomeFormattingResultEditorV0ParagraphLayoutBatchCommandRequestEditorV0ParagraphLayoutBatchCommandResultEditorV0ParagraphFillCommandRequestEditorV0ParagraphFillCommandResultEditorV0ParagraphBorderCommandRequestEditorV0ParagraphBorderCommandResultEditorV0ParagraphSortCommandRequestEditorV0ParagraphSortCommandResultBoundedLiveTextInsertResultBoundedLiveTextMutationResultEditorV0EditingReplaceFirstRequestEditorV0EditingReplaceFirstResultEditorV0EditingReplaceAllRequestEditorV0EditingReplaceAllSemanticRangeEditorV0EditingReplaceAllParagraphResultEditorV0EditingReplaceAllResult
MenuCommand
Section titled “MenuCommand”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";SystemPastePayload
Section titled “SystemPastePayload”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[];};ShellObservedBreak
Section titled “ShellObservedBreak”InterfaceDeclaration · api-edit.ts
interface ShellObservedBreak { break_kind: string; location: string; detail: string;}ShellReportSnapshot
Section titled “ShellReportSnapshot”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>;}ShellFixtureOption
Section titled “ShellFixtureOption”InterfaceDeclaration · api-edit.ts
interface ShellFixtureOption { key: string; label: string; path: string; description: string;}ShellParagraphTabStop
Section titled “ShellParagraphTabStop”InterfaceDeclaration · api-edit.ts
interface ShellParagraphTabStop { alignment: string; position_twips: number; leader?: string | null; source: string; text?: string; width_milli_px?: number;}ShellComposedLineFragment
Section titled “ShellComposedLineFragment”InterfaceDeclaration · api-edit.ts
interface ShellComposedLineFragment { text: string; width_milli_px: number;}ShellComposedParagraphLine
Section titled “ShellComposedParagraphLine”InterfaceDeclaration · api-edit.ts
interface ShellComposedParagraphLine { text: string; fragments: ShellComposedLineFragment[];}ShellComposedParagraph
Section titled “ShellComposedParagraph”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[];}ShellParagraphCompositionSnapshot
Section titled “ShellParagraphCompositionSnapshot”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[];}BoundedLiveTextInsertRequest
Section titled “BoundedLiveTextInsertRequest”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;}EditorV0InsertBreakKind
Section titled “EditorV0InsertBreakKind”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";EditorV0InsertDropCapKind
Section titled “EditorV0InsertDropCapKind”TypeAliasDeclaration · api-edit.ts
type EditorV0InsertDropCapKind = "none" | "drop" | "margin";EditorV0InsertBreakRequest
Section titled “EditorV0InsertBreakRequest”InterfaceDeclaration · api-edit.ts
interface EditorV0InsertBreakRequest { breakKind: EditorV0InsertBreakKind; paragraphIndex: number; offset?: number | null; deleteCount?: number | null; reopenAfterWrite?: boolean; sourcePath?: string | null; outputPath?: string | null;}EditorV0InsertDropCapRequest
Section titled “EditorV0InsertDropCapRequest”InterfaceDeclaration · api-edit.ts
interface EditorV0InsertDropCapRequest { dropCapKind: EditorV0InsertDropCapKind; paragraphIndex: number; reopenAfterWrite?: boolean; outputPath?: string | null;}EditorV0InsertBreakResult
Section titled “EditorV0InsertBreakResult”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;}EditorV0AddTextLevel
Section titled “EditorV0AddTextLevel”TypeAliasDeclaration · api-edit.ts
type EditorV0AddTextLevel = "none" | "1" | "2" | "3";EditorV0AddTextRequest
Section titled “EditorV0AddTextRequest”InterfaceDeclaration · api-edit.ts
interface EditorV0AddTextRequest { paragraphIndex: number; level: EditorV0AddTextLevel; reopenAfterWrite?: boolean; outputPath?: string | null;}EditorV0InsertDropCapResult
Section titled “EditorV0InsertDropCapResult”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;}EditorV0AddTextResult
Section titled “EditorV0AddTextResult”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;}EditorV0ParagraphStructureRequest
Section titled “EditorV0ParagraphStructureRequest”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;}EditorV0ParagraphStructureResult
Section titled “EditorV0ParagraphStructureResult”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;}EditorV0ToolbarFormatCommandRequest
Section titled “EditorV0ToolbarFormatCommandRequest”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;}EditorV0ToolbarFormatCommandResult
Section titled “EditorV0ToolbarFormatCommandResult”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;}EditorV0ToolbarFormatBatchCommandRequest
Section titled “EditorV0ToolbarFormatBatchCommandRequest”InterfaceDeclaration · api-edit.ts
interface EditorV0ToolbarFormatBatchCommandRequest { commands: EditorV0ToolbarFormatCommandRequest[]; reopenAfterWrite?: boolean;}EditorV0ToolbarFormatBatchCommandResult
Section titled “EditorV0ToolbarFormatBatchCommandResult”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;}EditorV0ParagraphLayoutCommandRequest
Section titled “EditorV0ParagraphLayoutCommandRequest”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;}EditorV0ParagraphLayoutCommandResult
Section titled “EditorV0ParagraphLayoutCommandResult”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[];}EditorV0UpdateStyleFromSelectionRequest
Section titled “EditorV0UpdateStyleFromSelectionRequest”InterfaceDeclaration · api-edit.ts
interface EditorV0UpdateStyleFromSelectionRequest { styleId: "FastDocWritingHeading"; styleName: "FastDoc Writing Heading"; paragraphIndexes: number[]; outputPath?: string | null; reopenAfterWrite?: boolean;}EditorV0UpdateStyleFromSelectionResult
Section titled “EditorV0UpdateStyleFromSelectionResult”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;}EditorV0HomeCharacterFormat
Section titled “EditorV0HomeCharacterFormat”InterfaceDeclaration · api-edit.ts
interface EditorV0HomeCharacterFormat { bold: boolean; italic: boolean; underline: boolean; colorRgb: string | null; fontFamily: string | null; fontSizeHalfPoints: number | null;}EditorV0HomeTabStop
Section titled “EditorV0HomeTabStop”InterfaceDeclaration · api-edit.ts
interface EditorV0HomeTabStop { positionTwips: number; alignment: "left" | "center" | "right" | "decimal" | "bar" | "num" | "clear"; leader: "none" | "dot" | "hyphen" | "underscore" | "heavy" | "middle-dot";}EditorV0HomeParagraphFormat
Section titled “EditorV0HomeParagraphFormat”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[];}EditorV0HomeStyleFormat
Section titled “EditorV0HomeStyleFormat”InterfaceDeclaration · api-edit.ts
interface EditorV0HomeStyleFormat { paragraph: EditorV0HomeParagraphFormat; character: EditorV0HomeCharacterFormat;}EditorV0HomeStyleDefinition
Section titled “EditorV0HomeStyleDefinition”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;}EditorV0HomeParagraphState
Section titled “EditorV0HomeParagraphState”InterfaceDeclaration · api-edit.ts
interface EditorV0HomeParagraphState { paragraphIndex: number; text: string; styleId: string; hasNumbering: boolean; format: EditorV0HomeParagraphFormat;}EditorV0HomeFormattingSnapshot
Section titled “EditorV0HomeFormattingSnapshot”InterfaceDeclaration · api-edit.ts
interface EditorV0HomeFormattingSnapshot { schema: "fastdoc.home-formatting-state.v1"; defaultTabStopTwips: number; styles: EditorV0HomeStyleDefinition[]; paragraphs: EditorV0HomeParagraphState[];}EditorV0HomeFormattingOperation
Section titled “EditorV0HomeFormattingOperation”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[];};EditorV0HomeFormattingRequest
Section titled “EditorV0HomeFormattingRequest”InterfaceDeclaration · api-edit.ts
interface EditorV0HomeFormattingRequest { operations: EditorV0HomeFormattingOperation[]; outputPath?: string | null; reopenAfterWrite?: boolean;}EditorV0HomeFormattingResult
Section titled “EditorV0HomeFormattingResult”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;}EditorV0ParagraphLayoutBatchCommandResult
Section titled “EditorV0ParagraphLayoutBatchCommandResult”InterfaceDeclaration · api-edit.ts
interface EditorV0ParagraphLayoutBatchCommandResult { applied: boolean; outputPath: string; paragraphIndexes: number[]; commandCount: number; beforeTexts: string[]; afterTexts: string[];}EditorV0ParagraphFillCommandRequest
Section titled “EditorV0ParagraphFillCommandRequest”InterfaceDeclaration · api-edit.ts
interface EditorV0ParagraphFillCommandRequest { paragraphIndex: number; fillColorRgb: string; outputPath?: string | null; reopenAfterWrite?: boolean;}EditorV0ParagraphFillCommandResult
Section titled “EditorV0ParagraphFillCommandResult”InterfaceDeclaration · api-edit.ts
interface EditorV0ParagraphFillCommandResult { applied: boolean; outputPath: string; fillColorRgb: string; paragraphIndex: number; beforeTexts: string[]; afterTexts: string[];}EditorV0ParagraphBorderCommandRequest
Section titled “EditorV0ParagraphBorderCommandRequest”InterfaceDeclaration · api-edit.ts
interface EditorV0ParagraphBorderCommandRequest { paragraphIndex: number; borderColorRgb: string; outputPath?: string | null; reopenAfterWrite?: boolean;}EditorV0ParagraphBorderCommandResult
Section titled “EditorV0ParagraphBorderCommandResult”InterfaceDeclaration · api-edit.ts
interface EditorV0ParagraphBorderCommandResult { applied: boolean; outputPath: string; borderColorRgb: string; paragraphIndex: number; beforeTexts: string[]; afterTexts: string[];}EditorV0ParagraphSortCommandRequest
Section titled “EditorV0ParagraphSortCommandRequest”InterfaceDeclaration · api-edit.ts
interface EditorV0ParagraphSortCommandRequest { startParagraphIndex: number; paragraphCount: number; outputPath?: string | null; reopenAfterWrite?: boolean;}EditorV0ParagraphSortCommandResult
Section titled “EditorV0ParagraphSortCommandResult”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";}BoundedLiveTextInsertResult
Section titled “BoundedLiveTextInsertResult”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; };}BoundedLiveTextMutationResult
Section titled “BoundedLiveTextMutationResult”TypeAliasDeclaration · api-edit.ts
type BoundedLiveTextMutationResult = Omit<BoundedLiveTextInsertResult, "afterText"> & { afterText: string;};EditorV0EditingReplaceFirstRequest
Section titled “EditorV0EditingReplaceFirstRequest”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;}EditorV0EditingReplaceFirstResult
Section titled “EditorV0EditingReplaceFirstResult”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;}EditorV0EditingReplaceAllRequest
Section titled “EditorV0EditingReplaceAllRequest”InterfaceDeclaration · api-edit.ts
interface EditorV0EditingReplaceAllRequest { findText: string; replaceText: string; matchCountBefore?: number | null; matchCase?: boolean; wholeWord?: boolean; storyAware?: boolean; outputPath?: string | null; reopenAfterWrite?: boolean;}EditorV0EditingReplaceAllSemanticRange
Section titled “EditorV0EditingReplaceAllSemanticRange”InterfaceDeclaration · api-edit.ts
interface EditorV0EditingReplaceAllSemanticRange { offset: number; deleteCount: number; matchedText: string;}EditorV0EditingReplaceAllParagraphResult
Section titled “EditorV0EditingReplaceAllParagraphResult”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[];}EditorV0EditingReplaceAllResult
Section titled “EditorV0EditingReplaceAllResult”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;}