superdoc 2.24.0-next.1 → 2.24.0-next.11
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/chunks/{create-super-doc-ui-DFNXiKvQ.es.js → create-super-doc-ui-8UTu16Lw.es.js} +229 -82
- package/dist/chunks/{create-super-doc-ui-D_FbXpOQ.cjs → create-super-doc-ui-bTFGKVRb.cjs} +229 -82
- package/dist/collaboration-upgrade-engine.cjs +1 -1
- package/dist/collaboration-upgrade-engine.es.js +1 -1
- package/dist/document-api/src/authorities/authorities.types.d.ts +2 -0
- package/dist/document-api/src/bookmarks/bookmarks.types.d.ts +1 -0
- package/dist/document-api/src/capabilities/html-markdown-support.d.ts +2 -4
- package/dist/document-api/src/captions/captions.types.d.ts +1 -0
- package/dist/document-api/src/citations/citations.types.d.ts +2 -0
- package/dist/document-api/src/content-controls/content-controls.types.d.ts +1 -0
- package/dist/document-api/src/contract/command-catalog.d.ts +1 -1
- package/dist/document-api/src/contract/operation-definitions.d.ts +34 -6
- package/dist/document-api/src/cross-refs/cross-refs.types.d.ts +1 -0
- package/dist/document-api/src/fields/fields.types.d.ts +1 -0
- package/dist/document-api/src/footnotes/footnotes.types.d.ts +2 -0
- package/dist/document-api/src/get/get.d.ts +2 -1
- package/dist/document-api/src/hyperlinks/hyperlinks.types.d.ts +1 -0
- package/dist/document-api/src/images/images.types.d.ts +2 -0
- package/dist/document-api/src/index/index.types.d.ts +2 -0
- package/dist/document-api/src/index.d.ts +15 -12
- package/dist/document-api/src/inline-semantics/token-sets.d.ts +11 -0
- package/dist/document-api/src/insert/insert.d.ts +7 -1
- package/dist/document-api/src/lists/lists.types.d.ts +10 -0
- package/dist/document-api/src/paragraphs/paragraphs.types.d.ts +3 -0
- package/dist/document-api/src/receipt-bridge.d.ts +1 -0
- package/dist/document-api/src/replace/replace.d.ts +31 -4
- package/dist/document-api/src/sections/sections.types.d.ts +4 -1
- package/dist/document-api/src/selection/selection.d.ts +9 -2
- package/dist/document-api/src/selection/selection.types.d.ts +57 -8
- package/dist/document-api/src/styles/apply.d.ts +5 -0
- package/dist/document-api/src/styles/catalog.d.ts +40 -19
- package/dist/document-api/src/styles/create.d.ts +160 -0
- package/dist/document-api/src/styles/index.d.ts +8 -4
- package/dist/document-api/src/styles/registry.d.ts +34 -2
- package/dist/document-api/src/styles/schema.d.ts +24 -5
- package/dist/document-api/src/styles/theme.d.ts +32 -0
- package/dist/document-api/src/styles/validation.d.ts +11 -2
- package/dist/document-api/src/templates/apply.d.ts +13 -15
- package/dist/document-api/src/toc/toc.types.d.ts +3 -0
- package/dist/document-api/src/types/blocks.types.d.ts +6 -1
- package/dist/document-api/src/types/create.types.d.ts +3 -1
- package/dist/document-api/src/types/fragment.d.ts +3 -0
- package/dist/document-api/src/types/mutation-plan.types.d.ts +4 -0
- package/dist/document-api/src/types/query-match.types.d.ts +43 -5
- package/dist/document-api/src/types/receipt.d.ts +8 -0
- package/dist/document-api/src/types/sd-contract.d.ts +2 -0
- package/dist/document-api/src/types/sd-props.d.ts +54 -14
- package/dist/document-api/src/types/sd-styles.d.ts +58 -3
- package/dist/document-api/src/types/table-operations.types.d.ts +2 -0
- package/dist/document-api/src/write/write.d.ts +4 -2
- package/dist/public/ui-react.cjs +1 -1
- package/dist/public/ui-react.es.js +1 -1
- package/dist/public/ui-vue.cjs +1 -1
- package/dist/public/ui-vue.es.js +1 -1
- package/dist/public/ui.cjs +1 -1
- package/dist/public/ui.es.js +1 -1
- package/dist/style.css +87 -87
- package/dist/style.layered.css +87 -87
- package/dist/superdoc/src/core/editor-runtime/v2/v2-session-shortcut-routes.d.ts +2 -0
- package/dist/superdoc/src/public/ui/types.d.ts +22 -0
- package/dist/superdoc/src/public/ui.d.cts +4 -0
- package/dist/superdoc/src/public/ui.d.ts +1 -1
- package/dist/superdoc.cjs +110 -49
- package/dist/superdoc.es.js +110 -49
- package/dist-cdn/style.layered.css +1 -1
- package/dist-cdn/superdoc.min.css +1 -1
- package/dist-cdn/superdoc.min.js +42 -42
- package/package.json +2 -2
|
@@ -28,7 +28,7 @@ export interface IntentGroupMeta {
|
|
|
28
28
|
*/
|
|
29
29
|
inputExamples?: Record<string, unknown>[];
|
|
30
30
|
}
|
|
31
|
-
export declare const V1_RUNTIME_UNAVAILABLE_OPERATION_IDS: readonly ["blocks.split", "blocks.merge", "blocks.move", "lists.getState", "lists.apply", "lists.continue", "lists.restart", "lists.remove", "format.paragraph.setMarkRunProps", "tables.moveRow", "tables.moveColumn"];
|
|
31
|
+
export declare const V1_RUNTIME_UNAVAILABLE_OPERATION_IDS: readonly ["selection.releaseSnapshot", "blocks.split", "blocks.merge", "blocks.move", "lists.getState", "lists.apply", "lists.continue", "lists.restart", "lists.remove", "format.paragraph.setMarkRunProps", "tables.moveRow", "tables.moveColumn"];
|
|
32
32
|
export declare const INTENT_GROUP_META: Record<string, IntentGroupMeta>;
|
|
33
33
|
export declare const OPERATION_DEFINITIONS: {
|
|
34
34
|
readonly 'styles.apply': {
|
|
@@ -40,6 +40,15 @@ export declare const OPERATION_DEFINITIONS: {
|
|
|
40
40
|
readonly referenceDocPath: "styles/apply.mdx";
|
|
41
41
|
readonly referenceGroup: "styles";
|
|
42
42
|
};
|
|
43
|
+
readonly 'styles.create': {
|
|
44
|
+
readonly memberPath: "styles.create";
|
|
45
|
+
readonly description: "Define or redefine a named paragraph or character style in the Style Definitions part. Replaces the definition rather than merging into it, and decides conflicts on both styleId and name, because Word keys its Styles gallery on the name. Linked style pairs and table/numbering styles are out of scope.";
|
|
46
|
+
readonly expectedResult: "Returns a StylesCreateReceipt reporting whether the style was created or redefined, with per-channel before/after state for the paragraph and run properties.";
|
|
47
|
+
readonly requiresDocumentContext: true;
|
|
48
|
+
readonly metadata: CommandStaticMetadata;
|
|
49
|
+
readonly referenceDocPath: "styles/create.mdx";
|
|
50
|
+
readonly referenceGroup: "styles";
|
|
51
|
+
};
|
|
43
52
|
readonly 'styles.getCatalog': {
|
|
44
53
|
readonly memberPath: "styles.getCatalog";
|
|
45
54
|
readonly description: "List the available styles as a normalized catalogue with stable IDs, display names, type, visibility, priority, provenance, and source diagnostics. Supports view (quickGallery/recommended/currentDocument/all/inUse), type filtering, hidden/latent inclusion, usage rollups, and UI-safe preview tokens. Distinct from DocumentInfo.styles, which is a usage summary.";
|
|
@@ -49,6 +58,15 @@ export declare const OPERATION_DEFINITIONS: {
|
|
|
49
58
|
readonly referenceDocPath: "styles/get-catalog.mdx";
|
|
50
59
|
readonly referenceGroup: "styles";
|
|
51
60
|
};
|
|
61
|
+
readonly 'styles.getTheme': {
|
|
62
|
+
readonly memberPath: "styles.getTheme";
|
|
63
|
+
readonly description: "Read the document theme: its 12 theme colors, major and minor fonts, and the color mapping from settings.xml. A missing or malformed theme part returns the default Office theme labeled source 'fallback', with part status and diagnostics. Same theme as doc.get().theme, without the rest of the document.";
|
|
64
|
+
readonly expectedResult: "Returns a StylesGetThemeResult with the theme (always present, labeled document or fallback), the theme and settings part status, and diagnostics.";
|
|
65
|
+
readonly requiresDocumentContext: true;
|
|
66
|
+
readonly metadata: CommandStaticMetadata;
|
|
67
|
+
readonly referenceDocPath: "styles/get-theme.mdx";
|
|
68
|
+
readonly referenceGroup: "styles";
|
|
69
|
+
};
|
|
52
70
|
readonly 'templates.apply': {
|
|
53
71
|
readonly memberPath: "templates.apply";
|
|
54
72
|
readonly description: "Apply detected DOCX template/substrate (styles, numbering, settings, theme, font table, web settings, headers/footers, section defaults) from a source package onto the current document, preserving body content. Scopes are auto-detected from source package evidence.";
|
|
@@ -1031,9 +1049,19 @@ export declare const OPERATION_DEFINITIONS: {
|
|
|
1031
1049
|
readonly referenceDocPath: "selection/current.mdx";
|
|
1032
1050
|
readonly referenceGroup: "selection";
|
|
1033
1051
|
};
|
|
1052
|
+
readonly 'selection.releaseSnapshot': {
|
|
1053
|
+
readonly memberPath: "selection.releaseSnapshot";
|
|
1054
|
+
readonly description: string;
|
|
1055
|
+
readonly expectedResult: "Returns released=true when a same-session handle was removed; otherwise false.";
|
|
1056
|
+
readonly requiresDocumentContext: true;
|
|
1057
|
+
readonly metadata: CommandStaticMetadata;
|
|
1058
|
+
readonly referenceDocPath: "selection/release-snapshot.mdx";
|
|
1059
|
+
readonly referenceGroup: "selection";
|
|
1060
|
+
readonly batchable: false;
|
|
1061
|
+
};
|
|
1034
1062
|
readonly 'selection.extractOoxml': {
|
|
1035
1063
|
readonly memberPath: "selection.extractOoxml";
|
|
1036
|
-
readonly description: "Capture a nonempty current or addressed selection as OOXML with
|
|
1064
|
+
readonly description: "Capture a nonempty current or addressed selection as portable OOXML with native dependencies. Optional retain:true keeps an exact same-session restoration handle for one complete standalone body paragraph; release it when unused. Unsupported retained contexts and collaboration reject.";
|
|
1037
1065
|
readonly expectedResult: "Returns the selected OOXML, structural placement, source provenance, and required relationships and parts without changing the document.";
|
|
1038
1066
|
readonly requiresDocumentContext: true;
|
|
1039
1067
|
readonly metadata: CommandStaticMetadata;
|
|
@@ -3580,9 +3608,6 @@ export declare const OPERATION_DEFINITIONS: {
|
|
|
3580
3608
|
readonly "format.border": OperationDefinitionEntry & {
|
|
3581
3609
|
memberPath: "format.border";
|
|
3582
3610
|
};
|
|
3583
|
-
readonly "format.fitText": OperationDefinitionEntry & {
|
|
3584
|
-
memberPath: "format.fitText";
|
|
3585
|
-
};
|
|
3586
3611
|
readonly "format.dstrike": OperationDefinitionEntry & {
|
|
3587
3612
|
memberPath: "format.dstrike";
|
|
3588
3613
|
};
|
|
@@ -3610,6 +3635,9 @@ export declare const OPERATION_DEFINITIONS: {
|
|
|
3610
3635
|
readonly "format.kerning": OperationDefinitionEntry & {
|
|
3611
3636
|
memberPath: "format.kerning";
|
|
3612
3637
|
};
|
|
3638
|
+
readonly "format.fitText": OperationDefinitionEntry & {
|
|
3639
|
+
memberPath: "format.fitText";
|
|
3640
|
+
};
|
|
3613
3641
|
readonly "format.rStyle": OperationDefinitionEntry & {
|
|
3614
3642
|
memberPath: "format.rStyle";
|
|
3615
3643
|
};
|
|
@@ -3640,7 +3668,7 @@ export declare const OPERATION_DEFINITIONS: {
|
|
|
3640
3668
|
readonly get: {
|
|
3641
3669
|
readonly memberPath: "get";
|
|
3642
3670
|
readonly description: "Read the full document as an SDDocument structure.";
|
|
3643
|
-
readonly expectedResult: "Returns an SDDocument with body content projected into SDM/1 canonical shapes.";
|
|
3671
|
+
readonly expectedResult: "Returns an SDDocument with body content projected into SDM/1 canonical shapes, plus the document's authored styles, theme (labeled document or fallback), docDefaults, and diagnostics for missing or unreadable style parts.";
|
|
3644
3672
|
readonly requiresDocumentContext: true;
|
|
3645
3673
|
readonly metadata: CommandStaticMetadata;
|
|
3646
3674
|
readonly referenceDocPath: "get.mdx";
|
|
@@ -62,6 +62,7 @@ export interface CrossRefDomain {
|
|
|
62
62
|
}
|
|
63
63
|
export interface CrossRefMutationSuccess {
|
|
64
64
|
success: true;
|
|
65
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
65
66
|
crossRef: CrossRefAddress;
|
|
66
67
|
}
|
|
67
68
|
export type CrossRefMutationResult = CrossRefMutationSuccess | AdapterMutationFailure;
|
|
@@ -94,11 +94,13 @@ export interface FootnoteDomain {
|
|
|
94
94
|
}
|
|
95
95
|
export interface FootnoteMutationSuccess {
|
|
96
96
|
success: true;
|
|
97
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
97
98
|
footnote: FootnoteAddress;
|
|
98
99
|
}
|
|
99
100
|
export type FootnoteMutationResult = FootnoteMutationSuccess | AdapterMutationFailure;
|
|
100
101
|
export interface FootnoteConfigSuccess {
|
|
101
102
|
success: true;
|
|
103
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
102
104
|
}
|
|
103
105
|
export type FootnoteConfigResult = FootnoteConfigSuccess | AdapterMutationFailure;
|
|
104
106
|
export type FootnotesListResult = DiscoveryOutput<FootnoteDomain>;
|
|
@@ -14,6 +14,7 @@ export interface GetAdapter {
|
|
|
14
14
|
*
|
|
15
15
|
* @param adapter - Engine-specific get adapter.
|
|
16
16
|
* @param input - Canonical get input object.
|
|
17
|
-
* @returns An SDDocument with body content projected into SDM/1 canonical shapes
|
|
17
|
+
* @returns An SDDocument with body content projected into SDM/1 canonical shapes,
|
|
18
|
+
* plus the document's authored styles, theme, docDefaults and diagnostics.
|
|
18
19
|
*/
|
|
19
20
|
export declare function executeGet(adapter: GetAdapter, input: SDGetInput): SDDocument;
|
|
@@ -188,6 +188,7 @@ export interface SetZOrderInput {
|
|
|
188
188
|
}
|
|
189
189
|
export interface CreateImageSuccessResult {
|
|
190
190
|
success: true;
|
|
191
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
191
192
|
image: ImageAddress;
|
|
192
193
|
trackedChangeRefs?: ReceiptInsert[];
|
|
193
194
|
/** Commit id for the insertion, including its alt text when that was set in the same call. */
|
|
@@ -207,6 +208,7 @@ export interface ImagesListResult {
|
|
|
207
208
|
}
|
|
208
209
|
export interface ImagesMutationSuccessResult {
|
|
209
210
|
success: true;
|
|
211
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
210
212
|
image: ImageAddress;
|
|
211
213
|
trackedChangeRefs?: ReceiptInsert[];
|
|
212
214
|
}
|
|
@@ -113,11 +113,13 @@ export interface IndexEntryDomain {
|
|
|
113
113
|
}
|
|
114
114
|
export interface IndexMutationSuccess {
|
|
115
115
|
success: true;
|
|
116
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
116
117
|
index: IndexAddress;
|
|
117
118
|
}
|
|
118
119
|
export type IndexMutationResult = IndexMutationSuccess | AdapterMutationFailure;
|
|
119
120
|
export interface IndexEntryMutationSuccess {
|
|
120
121
|
success: true;
|
|
122
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
121
123
|
entry: IndexEntryAddress;
|
|
122
124
|
}
|
|
123
125
|
export type IndexEntryMutationResult = IndexEntryMutationSuccess | AdapterMutationFailure;
|
|
@@ -4,7 +4,7 @@ import { DeleteInput } from './delete/delete.js';
|
|
|
4
4
|
import { FindAdapter } from './find/find.js';
|
|
5
5
|
import { SDFindInput, SDFindResult, SDGetInput, SDNodeResult } from './types/sd-envelope.js';
|
|
6
6
|
import { FormatApi, FormatRangeInput } from './format/format.js';
|
|
7
|
-
import { StylesAdapter, StylesApi } from './styles/index.js';
|
|
7
|
+
import { StylesAdapter, StylesApi, StylesCreateAdapter, StylesCreateApi } from './styles/index.js';
|
|
8
8
|
import { TemplatesAdapter, TemplatesApi } from './templates/index.js';
|
|
9
9
|
import { GetNodeAdapter, GetNodeByIdInput } from './get-node/get-node.js';
|
|
10
10
|
import { GetAdapter } from './get/get.js';
|
|
@@ -25,7 +25,7 @@ import { InsertInput } from './insert/insert.js';
|
|
|
25
25
|
import { ResolveRangeInput, ResolveRangeOutput } from './ranges/ranges.types.js';
|
|
26
26
|
import { SelectionApi, SelectionAdapter } from './selection/selection.js';
|
|
27
27
|
import { ListsAdapter, ListsApi } from './lists/lists.js';
|
|
28
|
-
import { ReplaceInput } from './replace/replace.js';
|
|
28
|
+
import { ReplaceInput, ReplaceMutationOptions } from './replace/replace.js';
|
|
29
29
|
import { CreateAdapter, CreateApi } from './create/create.js';
|
|
30
30
|
import { BlocksAdapter, BlocksApi } from './blocks/blocks.js';
|
|
31
31
|
import { TableLocator, TableMutationResult, TablesConvertFromTextInput, TablesMoveInput, TablesSplitInput, TablesConvertToTextInput, TablesSetLayoutInput, TablesInsertRowInput, TablesDeleteRowInput, TablesMoveRowInput, TablesSetRowHeightInput, TablesDistributeRowsInput, TablesSetRowOptionsInput, TablesInsertColumnInput, TablesDeleteColumnInput, TablesMoveColumnInput, TablesSetColumnWidthInput, TablesDistributeColumnsInput, TablesInsertCellInput, TablesDeleteCellInput, TablesMergeCellsInput, TablesUnmergeCellsInput, TablesSplitCellInput, TablesSetCellPropertiesInput, TablesSetCellTextInput, TablesSortInput, TablesSetAltTextInput, TablesSetStyleInput, TablesClearStyleInput, TablesSetStyleOptionInput, TablesSetBorderInput, TablesClearBorderInput, TablesApplyBorderPresetInput, TablesSetShadingInput, TablesClearShadingInput, TablesSetTablePaddingInput, TablesSetCellPaddingInput, TablesSetCellSpacingInput, TablesClearCellSpacingInput, TablesApplyStyleInput, TablesSetBordersInput, TablesSetTableOptionsInput, TablesApplyPresetInput, TablesGetInput, TablesGetOutput, TablesGetCellsInput, TablesGetCellsOutput, TablesGetPropertiesInput, TablesGetPropertiesOutput, TablesGetStylesInput, TablesGetStylesOutput, TablesSetDefaultStyleInput, TablesClearDefaultStyleInput } from './types/table-operations.types.js';
|
|
@@ -77,8 +77,8 @@ export * from './export/export.types.js';
|
|
|
77
77
|
export type { SelectionMutationAdapter, SelectionMutationRequest, SelectionInsertRequest, } from './selection-mutation.js';
|
|
78
78
|
export type { RangeAnchor, DocumentEdgeAnchor, PointAnchor, RefBoundaryAnchor, ResolveRangeInput, ResolveRangeOutput, RangeBlockPreview, RangePreview, RangeResolverAdapter, ScrollIntoViewInput, ScrollIntoViewOutput, } from './ranges/index.js';
|
|
79
79
|
export { executeResolveRange } from './ranges/index.js';
|
|
80
|
-
export type { SelectionApi, SelectionAdapter, SelectionCurrentInput, SelectionExtractOoxmlInput, SelectionExtractOoxmlResult, SelectionOoxmlDependency, SelectionTableCellsTarget, TableSelectionInfo, SelectionInfo, } from './selection/selection.js';
|
|
81
|
-
export { executeSelectionCurrent, executeSelectionExtractOoxml } from './selection/selection.js';
|
|
80
|
+
export type { SelectionApi, SelectionAdapter, SelectionCurrentInput, SelectionExtractOoxmlInput, SelectionExtractOoxmlResult, SelectionOoxmlDependency, OoxmlContentSource, SelectionReleaseSnapshotInput, SelectionReleaseSnapshotResult, SelectionTableCellsTarget, TableSelectionInfo, SelectionInfo, } from './selection/selection.js';
|
|
81
|
+
export { executeSelectionCurrent, executeSelectionExtractOoxml, executeSelectionReleaseSnapshot, } from './selection/selection.js';
|
|
82
82
|
export type { HeaderFootersAdapter, HeaderFootersApi } from './header-footers/header-footers.js';
|
|
83
83
|
export * from './header-footers/header-footers.types.js';
|
|
84
84
|
export type { WatermarksAdapter, WatermarksApi } from './watermarks/watermarks.js';
|
|
@@ -112,8 +112,10 @@ export type { FormatInlineAliasApi, FormatInlineAliasInput, FormatBoldInput, For
|
|
|
112
112
|
export type { InlineRunPatch, InlineRunPatchKey, InlinePropertyStorage, InlinePropertyType, InlinePropertyCarrier, InlinePropertyRegistryEntry, UnderlinePatch, ShadingPatch, BorderPatch, FitTextPatch, LangPatch, RFontsPatch, EastAsianLayoutPatch, StylisticSetPatch, } from './format/inline-run-patch.js';
|
|
113
113
|
export { INLINE_PROPERTY_REGISTRY, INLINE_PROPERTY_KEY_SET, INLINE_PROPERTY_BY_KEY, INLINE_PROPERTY_KEYS_BY_STORAGE, validateInlineRunPatch, buildInlineRunPatchSchema, } from './format/inline-run-patch.js';
|
|
114
114
|
export { PROPERTY_REGISTRY, EXCLUDED_KEYS, ALLOWED_KEYS_BY_CHANNEL, getPropertyDefinition, toJsonSchema, buildPatchSchema, buildStateSchema, } from './styles/index.js';
|
|
115
|
-
export type { ValueSchema, MergeStrategy, PropertyDefinition, StylesAdapter, StylesApplyInput, StylesApplyRunInput, StylesApplyParagraphInput, StylesApplyOptions, StylesApplyReceipt, StylesBooleanState, StylesNumberState, StylesEnumState, StylesObjectState, StylesArrayState, StylesStateMap, StylesChannel, StylesRunPatch, StylesParagraphPatch, StylesTargetResolution, StylesApplyReceiptSuccess, StylesApplyReceiptFailure, NormalizedStylesApplyOptions, StyleCatalogView, StyleCatalogItemType, StyleCatalogFilterType, StyleProvenance, StyleCatalogDiagnosticSeverity, StyleSourcePartStatus, StyleCatalogUsageStatus, StyleCatalogPreviewStatus, StyleCatalogViewStatus, StyleCatalogItemVisibility, StyleCatalogItemUsage, StyleCatalogItemPreview, StyleCatalogItem, StyleCatalogDefaults, StyleCatalogDiagnostic, StyleCatalogSourceStatus, StylesGetCatalogInput, StylesGetCatalogResult, StylesGetCatalogAdapter, } from './styles/index.js';
|
|
116
|
-
export { STYLE_CATALOG_VIEWS, STYLE_CATALOG_FILTER_TYPES, executeStylesGetCatalog, validateStylesGetCatalogInput, } from './styles/index.js';
|
|
115
|
+
export type { ValueSchema, MergeStrategy, PropertyDefinition, StylesAdapter, StylesApplyInput, StylesApplyRunInput, StylesApplyParagraphInput, StylesApplyOptions, StylesApplyReceipt, StylesBooleanState, StylesNumberState, StylesEnumState, StylesObjectState, StylesArrayState, StylesStateMap, StylesChannel, StylesRunPatch, StylesParagraphPatch, StylesTargetResolution, StylesApplyReceiptSuccess, StylesApplyReceiptFailure, NormalizedStylesApplyOptions, StyleCatalogView, StyleCatalogItemType, StyleCatalogFilterType, StyleProvenance, StyleCatalogDiagnosticSeverity, StyleSourcePartStatus, StyleCatalogUsageStatus, StyleCatalogPreviewStatus, StyleCatalogViewStatus, StyleCatalogItemVisibility, StyleCatalogItemUsage, StyleCatalogItemPreview, StyleCatalogPreviewFontSource, StyleCatalogPreviewColorSource, StyleCatalogPreviewSources, StyleCatalogItem, StyleCatalogDefaults, StyleCatalogDiagnostic, StyleCatalogSourceStatus, StylesGetCatalogInput, StylesGetCatalogResult, StylesGetCatalogAdapter, StylesGetThemeInput, StylesThemeSourceStatus, StylesGetThemeResult, StylesGetThemeAdapter, } from './styles/index.js';
|
|
116
|
+
export { STYLE_CATALOG_VIEWS, STYLE_CATALOG_FILTER_TYPES, executeStylesGetCatalog, validateStylesGetCatalogInput, executeStylesGetTheme, validateStylesGetThemeInput, } from './styles/index.js';
|
|
117
|
+
export type { StylesScope, StyleRunPatch, StyleConflictPolicy, StyleChannelState, StylesCreateAdapter, StylesCreateApi, StylesCreateInput, StylesCreateParagraphInput, StylesCreateCharacterInput, StylesCreateOptions, NormalizedStylesCreateOptions, StylesCreateResolution, StylesCreateReceipt, StylesCreateReceiptSuccess, StylesCreateReceiptFailure, } from './styles/index.js';
|
|
118
|
+
export { STYLE_EXCLUDED_KEYS, EXCLUDED_KEYS_BY_SCOPE, SCOPE_LABEL, STYLE_XML_PATH, executeStylesCreate, validateStylesCreateInput, validateStylesCreateOptions, validatePatchObject, } from './styles/index.js';
|
|
117
119
|
export type { TemplatesAdapter, TemplatesApi, TemplatesApplyInput, TemplatesApplyOptions, TemplatesApplySource, TemplatesApplySourcePath, TemplatesApplySourceBase64, TemplateBodyPolicy, TemplateScope, NormalizedTemplatesApplyOptions, TemplateScopeReport, TemplateSkipReason, TemplateScopeSkip, TemplateUnsupportedItem, TemplateChangeKind, TemplateChangedPart, TemplateIdMapping, TemplateApplyWarning, TemplatesApplySourceInfo, TemplatesApplyReceiptSuccess, TemplatesApplyFailureCode, TemplatesApplyReceiptFailure, TemplatesApplyReceipt, } from './templates/index.js';
|
|
118
120
|
export { executeTemplatesApply } from './templates/index.js';
|
|
119
121
|
export type { CreateAdapter, CreateApi } from './create/create.js';
|
|
@@ -175,9 +177,9 @@ export { DocumentApiValidationError } from './errors.js';
|
|
|
175
177
|
export { textReceiptToSDReceipt, buildStructuralReceipt } from './receipt-bridge.js';
|
|
176
178
|
export type { MutationReceiptBridgeContext, StructuralReceiptParams } from './receipt-bridge.js';
|
|
177
179
|
export { isBlockNodeAddress } from './validation-primitives.js';
|
|
178
|
-
export type { InsertInput, InsertContentType, TextInsertInput, PlainTextInsertInput, RichContentInsertInput, LegacyInsertInput, } from './insert/insert.js';
|
|
180
|
+
export type { InsertInput, InsertContentType, TextInsertInput, PlainTextInsertInput, RichContentInsertInput, NativeOoxmlInsertInput, LegacyInsertInput, } from './insert/insert.js';
|
|
179
181
|
export { isStructuralInsertInput } from './insert/insert.js';
|
|
180
|
-
export type { ReplaceInput, TextReplaceInput, RichContentReplaceInput } from './replace/replace.js';
|
|
182
|
+
export type { ReplaceInput, TextReplaceInput, RichContentReplaceInput, ReplaceMutationOptions, NativeOoxmlReplaceInput, SnapshotReplaceInput, ParagraphTextReplaceInput, } from './replace/replace.js';
|
|
181
183
|
export { executeReplace, isStructuralReplaceInput, isRichContentReplaceInput } from './replace/replace.js';
|
|
182
184
|
export { executeFind } from './find/find.js';
|
|
183
185
|
export { validateDocumentFragment, validateSDFragment } from './validation/fragment-validator.js';
|
|
@@ -280,7 +282,8 @@ export interface DocumentApiSurface {
|
|
|
280
282
|
/**
|
|
281
283
|
* Read the full document as an SDDocument structure.
|
|
282
284
|
* @param input - Get input with optional read options.
|
|
283
|
-
* @returns An SDDocument with body content projected into SDM/1 canonical shapes
|
|
285
|
+
* @returns An SDDocument with body content projected into SDM/1 canonical shapes,
|
|
286
|
+
* plus the document's authored styles, theme, docDefaults and diagnostics.
|
|
284
287
|
*/
|
|
285
288
|
get(input: SDGetInput): SDDocument;
|
|
286
289
|
/**
|
|
@@ -353,7 +356,7 @@ export interface DocumentApiSurface {
|
|
|
353
356
|
replace(input: Exclude<import('./replace/replace.js').TextReplaceInput, {
|
|
354
357
|
target: import('./types/story.types.js').BodyStoryLocator;
|
|
355
358
|
}>, options: TrackedTextMutationOptions): SDMutationReceipt;
|
|
356
|
-
replace(input: ReplaceInput, options?:
|
|
359
|
+
replace(input: ReplaceInput, options?: ReplaceMutationOptions): SDMutationReceipt;
|
|
357
360
|
/**
|
|
358
361
|
* Delete text at a target range.
|
|
359
362
|
*/
|
|
@@ -373,7 +376,7 @@ export interface DocumentApiSurface {
|
|
|
373
376
|
/**
|
|
374
377
|
* Stylesheet operations (docDefaults, style definitions, paragraph style references).
|
|
375
378
|
*/
|
|
376
|
-
styles: StylesApi & {
|
|
379
|
+
styles: StylesApi & StylesCreateApi & {
|
|
377
380
|
paragraph: ParagraphStylesApi;
|
|
378
381
|
};
|
|
379
382
|
/**
|
|
@@ -560,7 +563,7 @@ export interface DocumentApiAdapters {
|
|
|
560
563
|
comments: CommentsAdapter;
|
|
561
564
|
write: WriteAdapter;
|
|
562
565
|
selectionMutation: SelectionMutationAdapter;
|
|
563
|
-
styles: StylesAdapter
|
|
566
|
+
styles: StylesAdapter & Partial<StylesCreateAdapter>;
|
|
564
567
|
templates: TemplatesAdapter;
|
|
565
568
|
trackChanges: TrackChangesAdapter;
|
|
566
569
|
create: CreateAdapter;
|
|
@@ -32,3 +32,14 @@ export declare const ST_THEME_COLOR_VALUES: readonly ["dark1", "light1", "dark2"
|
|
|
32
32
|
export type StThemeColorValue = (typeof ST_THEME_COLOR_VALUES)[number];
|
|
33
33
|
/** Runtime set for O(1) ST_ThemeColor validation. */
|
|
34
34
|
export declare const ST_THEME_COLOR_VALUE_SET: ReadonlySet<string>;
|
|
35
|
+
/**
|
|
36
|
+
* Accepted `w:val` values for `w:highlight`. A closed enumeration, unlike a
|
|
37
|
+
* colour value: anything outside it produces a document Word offers to repair.
|
|
38
|
+
*
|
|
39
|
+
* No `StHighlightValue` alias beside it, unlike the sets above:
|
|
40
|
+
* {@link SDHighlightColor} in `types/sd-props.ts` is already derived from this
|
|
41
|
+
* list, and a second name for one union is a second thing to keep in step.
|
|
42
|
+
*/
|
|
43
|
+
export declare const ST_HIGHLIGHT_VALUES: readonly ["black", "blue", "cyan", "green", "magenta", "red", "yellow", "white", "darkBlue", "darkCyan", "darkGreen", "darkMagenta", "darkRed", "darkYellow", "darkGray", "lightGray", "none"];
|
|
44
|
+
/** Runtime set for O(1) ST_HighlightColor validation. */
|
|
45
|
+
export declare const ST_HIGHLIGHT_VALUE_SET: ReadonlySet<string>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { OoxmlContentSource } from '../selection/selection.types.js';
|
|
1
2
|
import { RichContentMutationOptions, TextMutationOptions, WriteAdapter } from '../write/write.js';
|
|
2
3
|
import { SelectionTarget, TargetLocator, SDMutationReceipt } from '../types/index.js';
|
|
3
4
|
import { SDInsertInput } from '../types/structural-input.js';
|
|
@@ -45,7 +46,12 @@ export type LegacyInsertInput = TextInsertInput;
|
|
|
45
46
|
* Discrimination: presence of `content` (structural) vs `value` (text string).
|
|
46
47
|
* These are mutually exclusive: providing both is an error.
|
|
47
48
|
*/
|
|
48
|
-
export type
|
|
49
|
+
export type NativeOoxmlInsertInput = OoxmlContentSource & {
|
|
50
|
+
target?: SelectionTarget | BlockNodeAddress;
|
|
51
|
+
placement?: Placement;
|
|
52
|
+
in?: StoryLocator;
|
|
53
|
+
};
|
|
54
|
+
export type InsertInput = TextInsertInput | RichContentInsertInput | SDInsertInput | NativeOoxmlInsertInput;
|
|
49
55
|
export type PlainTextInsertInput = TextInsertInput & {
|
|
50
56
|
type?: 'text';
|
|
51
57
|
};
|
|
@@ -358,12 +358,14 @@ export interface ListsCaptureTemplateSuccessResult {
|
|
|
358
358
|
export type ListsCaptureTemplateResult = ListsCaptureTemplateSuccessResult | ListsFailureResult;
|
|
359
359
|
export interface ListsInsertSuccessResult {
|
|
360
360
|
success: true;
|
|
361
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
361
362
|
item: ListItemAddress;
|
|
362
363
|
insertionPoint: TextAddress;
|
|
363
364
|
trackedChangeRefs?: ReceiptInsert[];
|
|
364
365
|
}
|
|
365
366
|
export interface ListsMutateItemSuccessResult {
|
|
366
367
|
success: true;
|
|
368
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
367
369
|
item: ListItemAddress;
|
|
368
370
|
/** Tracked changes authored by this mutation when `changeMode` is tracked. */
|
|
369
371
|
trackedChangeRefs?: ReceiptInsert[];
|
|
@@ -375,32 +377,38 @@ export interface ListsMutateItemSuccessResult {
|
|
|
375
377
|
}
|
|
376
378
|
export interface ListsCreateSuccessResult {
|
|
377
379
|
success: true;
|
|
380
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
378
381
|
listId: string;
|
|
379
382
|
item: ListItemAddress;
|
|
380
383
|
}
|
|
381
384
|
export interface ListsJoinSuccessResult {
|
|
382
385
|
success: true;
|
|
386
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
383
387
|
listId: string;
|
|
384
388
|
}
|
|
385
389
|
export interface ListsSeparateSuccessResult {
|
|
386
390
|
success: true;
|
|
391
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
387
392
|
listId: string;
|
|
388
393
|
numId: number;
|
|
389
394
|
}
|
|
390
395
|
export interface ListsMergeSuccessResult {
|
|
391
396
|
success: true;
|
|
397
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
392
398
|
listId: string;
|
|
393
399
|
absorbedCount: number;
|
|
394
400
|
removedEmptyBlocks: number;
|
|
395
401
|
}
|
|
396
402
|
export interface ListsSplitSuccessResult {
|
|
397
403
|
success: true;
|
|
404
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
398
405
|
listId: string;
|
|
399
406
|
numId: number;
|
|
400
407
|
restartedAt: number | null;
|
|
401
408
|
}
|
|
402
409
|
export interface ListsDetachSuccessResult {
|
|
403
410
|
success: true;
|
|
411
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
404
412
|
paragraph: {
|
|
405
413
|
kind: 'block';
|
|
406
414
|
nodeType: 'paragraph';
|
|
@@ -409,6 +417,7 @@ export interface ListsDetachSuccessResult {
|
|
|
409
417
|
}
|
|
410
418
|
export interface ListsConvertToTextSuccessResult {
|
|
411
419
|
success: true;
|
|
420
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
412
421
|
paragraph: {
|
|
413
422
|
kind: 'block';
|
|
414
423
|
nodeType: 'paragraph';
|
|
@@ -440,6 +449,7 @@ export type ListsDetachResult = ListsDetachSuccessResult | ListsFailureResult;
|
|
|
440
449
|
export type ListsConvertToTextResult = ListsConvertToTextSuccessResult | ListsFailureResult;
|
|
441
450
|
export interface ListsDeleteSuccessResult {
|
|
442
451
|
success: true;
|
|
452
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
443
453
|
/** Number of list items removed. */
|
|
444
454
|
deletedCount: number;
|
|
445
455
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BlockNodeAddress } from '../types/base.js';
|
|
2
2
|
import { ReceiptFailure, ReceiptInsert } from '../types/receipt.js';
|
|
3
3
|
import { SDRunProps } from '../types/sd-props.js';
|
|
4
|
+
import { ChangeMode } from '../write/write.js';
|
|
4
5
|
export type ParagraphBlockType = 'paragraph' | 'heading' | 'listItem';
|
|
5
6
|
export type ParagraphTarget = BlockNodeAddress & {
|
|
6
7
|
nodeType: ParagraphBlockType;
|
|
@@ -12,6 +13,8 @@ export interface ParagraphMutationSuccess {
|
|
|
12
13
|
success: true;
|
|
13
14
|
target: ParagraphTarget;
|
|
14
15
|
resolution: MutationResolution;
|
|
16
|
+
/** Mode applied to committed paragraph content; omitted when no content was committed. */
|
|
17
|
+
appliedChangeMode?: ChangeMode;
|
|
15
18
|
/** Logical tracked-change entities created or revised by this mutation. */
|
|
16
19
|
trackedChangeRefs?: ReceiptInsert[];
|
|
17
20
|
}
|
|
@@ -7,6 +7,7 @@ export interface MutationReceiptBridgeContext {
|
|
|
7
7
|
conversion?: SDMutationConversionReport;
|
|
8
8
|
}
|
|
9
9
|
interface CanonicalSuccessMetadata {
|
|
10
|
+
appliedChangeMode?: ReceiptSuccess['appliedChangeMode'];
|
|
10
11
|
id?: ReceiptSuccess['id'];
|
|
11
12
|
inserted?: ReceiptSuccess['inserted'];
|
|
12
13
|
updated?: ReceiptSuccess['updated'];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { OoxmlContentSource } from '../selection/selection.types.js';
|
|
1
2
|
import { RichContentMutationOptions, TextMutationOptions, WriteAdapter } from '../write/write.js';
|
|
2
3
|
import { SelectionTarget } from '../types/address.js';
|
|
3
4
|
import { SDMutationReceipt } from '../types/sd-contract.js';
|
|
@@ -47,11 +48,37 @@ export type RichContentReplaceInput = {
|
|
|
47
48
|
/**
|
|
48
49
|
* Input payload for the `doc.replace` operation.
|
|
49
50
|
*
|
|
50
|
-
* Discrimination: `text
|
|
51
|
+
* Discrimination: `text`, typed `value`, `content`, portable `capture`, or retained `snapshotId`.
|
|
51
52
|
*/
|
|
52
|
-
export type
|
|
53
|
+
export type NativeOoxmlReplaceInput = OoxmlContentSource & {
|
|
54
|
+
target: SelectionTarget | BlockNodeAddress;
|
|
55
|
+
in?: StoryLocator;
|
|
56
|
+
nestingPolicy?: NestingPolicy;
|
|
57
|
+
};
|
|
58
|
+
export type SnapshotReplaceInput = {
|
|
59
|
+
target: BlockNodeAddress;
|
|
60
|
+
snapshotId: string;
|
|
61
|
+
in?: never;
|
|
62
|
+
};
|
|
63
|
+
export type ParagraphTextReplaceInput = {
|
|
64
|
+
target: BlockNodeAddress;
|
|
65
|
+
text: string;
|
|
66
|
+
in?: never;
|
|
67
|
+
};
|
|
68
|
+
export interface ReplaceMutationOptions extends RichContentMutationOptions {
|
|
69
|
+
/** Replace one paragraph's contents, retaining its identity and exact paragraph properties. */
|
|
70
|
+
replaceMode?: 'contents';
|
|
71
|
+
/** Compare the addressed paragraph with an unchanged retained snapshot before committing. */
|
|
72
|
+
expectedSnapshotId?: string;
|
|
73
|
+
}
|
|
74
|
+
type ReplaceExecutionOptions = ReplaceMutationOptions | (TextMutationOptions & {
|
|
75
|
+
replaceMode?: never;
|
|
76
|
+
expectedSnapshotId?: never;
|
|
77
|
+
});
|
|
78
|
+
export type ReplaceInput = TextReplaceInput | RichContentReplaceInput | SDReplaceInput | NativeOoxmlReplaceInput | SnapshotReplaceInput | ParagraphTextReplaceInput;
|
|
53
79
|
/** Returns true when the input uses the structural SDFragment shape. */
|
|
54
80
|
export declare function isStructuralReplaceInput(input: ReplaceInput): input is SDReplaceInput;
|
|
55
81
|
export declare function isRichContentReplaceInput(input: ReplaceInput): input is RichContentReplaceInput;
|
|
56
|
-
export declare function validateReplaceInput(input: unknown): asserts input is ReplaceInput;
|
|
57
|
-
export declare function executeReplace(selectionAdapter: SelectionMutationAdapter, writeAdapter: WriteAdapter, input: ReplaceInput, options?:
|
|
82
|
+
export declare function validateReplaceInput(input: unknown, options?: ReplaceExecutionOptions): asserts input is ReplaceInput;
|
|
83
|
+
export declare function executeReplace(selectionAdapter: SelectionMutationAdapter, writeAdapter: WriteAdapter, input: ReplaceInput, options?: ReplaceExecutionOptions): SDMutationReceipt;
|
|
84
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BlockNodeAddress, ReceiptFailure } from '../types/index.js';
|
|
1
|
+
import { BlockNodeAddress, ChangeMode, ReceiptFailure } from '../types/index.js';
|
|
2
2
|
import { DiscoveryOutput } from '../types/discovery.js';
|
|
3
3
|
export type SectionAddress = {
|
|
4
4
|
kind: 'section';
|
|
@@ -112,6 +112,8 @@ export type SectionsListResult = DiscoveryOutput<SectionDomain>;
|
|
|
112
112
|
export interface SectionMutationSuccessResult {
|
|
113
113
|
success: true;
|
|
114
114
|
section: SectionAddress;
|
|
115
|
+
/** Committed review-aware content mode; omitted for dry runs, no-ops and non-reviewable settings. */
|
|
116
|
+
appliedChangeMode?: ChangeMode;
|
|
115
117
|
}
|
|
116
118
|
export interface SectionMutationFailureResult {
|
|
117
119
|
success: false;
|
|
@@ -128,6 +130,7 @@ export interface DocumentMutationSuccessResult {
|
|
|
128
130
|
export type DocumentMutationResult = DocumentMutationSuccessResult | SectionMutationFailureResult;
|
|
129
131
|
export interface CreateSectionBreakSuccessResult {
|
|
130
132
|
success: true;
|
|
133
|
+
appliedChangeMode?: 'direct' | 'tracked';
|
|
131
134
|
section: SectionAddress;
|
|
132
135
|
/**
|
|
133
136
|
* Present only when the break is represented as a dedicated paragraph.
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { SelectionCurrentInput, SelectionExtractOoxmlInput, SelectionExtractOoxmlResult, SelectionInfo } from './selection.types.js';
|
|
2
|
-
export type { SelectionCurrentInput, SelectionExtractOoxmlInput, SelectionExtractOoxmlResult, SelectionOoxmlDependency, SelectionTableCellsTarget, TableSelectionInfo, SelectionInfo, } from './selection.types.js';
|
|
1
|
+
import { SelectionCurrentInput, SelectionExtractOoxmlInput, SelectionExtractOoxmlResult, SelectionInfo, SelectionReleaseSnapshotInput, SelectionReleaseSnapshotResult, OoxmlContentSource } from './selection.types.js';
|
|
2
|
+
export type { SelectionCurrentInput, SelectionExtractOoxmlInput, SelectionExtractOoxmlResult, SelectionOoxmlDependency, SelectionTableCellsTarget, TableSelectionInfo, SelectionInfo, SelectionReleaseSnapshotInput, SelectionReleaseSnapshotResult, OoxmlContentSource, } from './selection.types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Engine-specific adapter for the selection API.
|
|
5
5
|
*/
|
|
6
6
|
export interface SelectionAdapter {
|
|
7
|
+
readonly supportsRetainedOoxml?: boolean;
|
|
7
8
|
/** Read the editor's current selection. */
|
|
8
9
|
current(input: SelectionCurrentInput): SelectionInfo;
|
|
9
10
|
extractOoxml(input: SelectionExtractOoxmlInput): SelectionExtractOoxmlResult;
|
|
11
|
+
releaseSnapshot?(input: SelectionReleaseSnapshotInput): SelectionReleaseSnapshotResult;
|
|
10
12
|
}
|
|
11
13
|
/**
|
|
12
14
|
* Public selection API exposed on `editor.doc.selection`.
|
|
@@ -22,6 +24,11 @@ export interface SelectionApi {
|
|
|
22
24
|
current(input?: SelectionCurrentInput): SelectionInfo;
|
|
23
25
|
/** Capture the addressed selected OOXML and its package dependencies. */
|
|
24
26
|
extractOoxml(input: SelectionExtractOoxmlInput): SelectionExtractOoxmlResult;
|
|
27
|
+
/** Release an exact restoration handle without changing document or history. */
|
|
28
|
+
releaseSnapshot(input: SelectionReleaseSnapshotInput): SelectionReleaseSnapshotResult;
|
|
25
29
|
}
|
|
26
30
|
export declare function executeSelectionExtractOoxml(adapter: SelectionAdapter, input: SelectionExtractOoxmlInput): SelectionExtractOoxmlResult;
|
|
27
31
|
export declare function executeSelectionCurrent(adapter: SelectionAdapter, input?: SelectionCurrentInput): SelectionInfo;
|
|
32
|
+
export declare function executeSelectionReleaseSnapshot(adapter: SelectionAdapter, input: SelectionReleaseSnapshotInput): SelectionReleaseSnapshotResult;
|
|
33
|
+
export declare function isOoxmlContentSource<T>(input: T): input is T & OoxmlContentSource;
|
|
34
|
+
export declare function validateOoxmlContentSource(input: Record<string, unknown>): void;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { SelectionTarget, TextTarget } from '../types/address.js';
|
|
2
2
|
export interface SelectionTableCellsTarget {
|
|
3
3
|
kind: 'tableCells';
|
|
4
|
+
selectionMode?: 'cells';
|
|
5
|
+
isRectangular?: true;
|
|
4
6
|
tableId: string;
|
|
5
7
|
start: {
|
|
6
8
|
rowIndex: number;
|
|
@@ -12,23 +14,43 @@ export interface SelectionTableCellsTarget {
|
|
|
12
14
|
};
|
|
13
15
|
story?: SelectionTarget['story'];
|
|
14
16
|
}
|
|
15
|
-
/** Table
|
|
16
|
-
export interface TableSelectionInfo
|
|
17
|
-
|
|
17
|
+
/** Table/cell context for the selection; bounds alone are not an editing target. */
|
|
18
|
+
export interface TableSelectionInfo {
|
|
19
|
+
kind: 'tableCells';
|
|
20
|
+
tableId: string;
|
|
21
|
+
story?: SelectionTarget['story'];
|
|
22
|
+
/** Inclusive logical bounds, including each selected owner's span. */
|
|
23
|
+
start: {
|
|
24
|
+
rowIndex: number;
|
|
25
|
+
columnIndex: number;
|
|
26
|
+
};
|
|
27
|
+
end: {
|
|
28
|
+
rowIndex: number;
|
|
29
|
+
columnIndex: number;
|
|
30
|
+
};
|
|
31
|
+
/** Whole-table identity requires whole-cell selection intent. */
|
|
18
32
|
type: 'table' | 'cell' | 'cells';
|
|
19
|
-
/**
|
|
33
|
+
/** Text context preserves exact character targets; cells denotes whole-cell intent. */
|
|
34
|
+
selectionMode: 'text' | 'cells';
|
|
35
|
+
/** Whether the exact cells fill the bounding rectangle without holes. */
|
|
36
|
+
isRectangular: boolean;
|
|
37
|
+
/** Exact logical owners in row-major order; vertical continuations are deduplicated. */
|
|
20
38
|
cells: {
|
|
21
39
|
nodeId: string;
|
|
22
40
|
rowIndex: number;
|
|
23
41
|
columnIndex: number;
|
|
42
|
+
rowspan: number;
|
|
43
|
+
colspan: number;
|
|
24
44
|
}[];
|
|
25
45
|
}
|
|
26
46
|
export type SelectionExtractOoxmlInput = {
|
|
27
47
|
at: SelectionTarget | SelectionTableCellsTarget;
|
|
28
48
|
selection?: never;
|
|
49
|
+
retain?: boolean;
|
|
29
50
|
} | {
|
|
30
51
|
selection: 'current';
|
|
31
52
|
at?: never;
|
|
53
|
+
retain?: boolean;
|
|
32
54
|
};
|
|
33
55
|
export interface SelectionOoxmlDependency {
|
|
34
56
|
sourcePartUri: string;
|
|
@@ -43,6 +65,8 @@ export interface SelectionOoxmlDependency {
|
|
|
43
65
|
export interface SelectionExtractOoxmlResult {
|
|
44
66
|
/** Version of the serialized selection-capture manifest. */
|
|
45
67
|
formatVersion: 1;
|
|
68
|
+
/** Same-session exact restoration handle, present only for retain:true. Release when unused. */
|
|
69
|
+
snapshotId?: string;
|
|
46
70
|
at: SelectionTarget | SelectionTableCellsTarget;
|
|
47
71
|
/** Source revision for provenance, never a read precondition. */
|
|
48
72
|
evaluatedRevision: string;
|
|
@@ -68,6 +92,8 @@ export interface SelectionExtractOoxmlResult {
|
|
|
68
92
|
story: SelectionTarget['story'] | null;
|
|
69
93
|
partUri: string;
|
|
70
94
|
paragraphStyleId: string | null;
|
|
95
|
+
/** Exact opaque package coordinate for a retained capture, for pairing with committed review UI. */
|
|
96
|
+
packageRevision?: string;
|
|
71
97
|
};
|
|
72
98
|
/** Source structure outside the selected visible content needed to interpret it. */
|
|
73
99
|
context: {
|
|
@@ -123,6 +149,12 @@ export interface SelectionInfo {
|
|
|
123
149
|
* full selection.
|
|
124
150
|
*/
|
|
125
151
|
target: TextTarget | null;
|
|
152
|
+
/** Deletion-inclusive multi-block text coverage for range review decisions, when resolvable. */
|
|
153
|
+
trackedTarget?: TextTarget | null;
|
|
154
|
+
/** Whether this exact text range supports tracked-change decisions; excludes permissions. */
|
|
155
|
+
trackedChangeRangeDecisionSupported?: boolean;
|
|
156
|
+
/** Whether the selection covers every tracked-text fragment of each active change. */
|
|
157
|
+
trackedChangesWhollySelected?: boolean;
|
|
126
158
|
/**
|
|
127
159
|
* Explicit selection envelope for the current live selection, or `null` when
|
|
128
160
|
* the runtime cannot project one truthfully.
|
|
@@ -132,10 +164,11 @@ export interface SelectionInfo {
|
|
|
132
164
|
*/
|
|
133
165
|
selectionTarget?: SelectionTarget | null;
|
|
134
166
|
/**
|
|
135
|
-
* V2 browser
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
167
|
+
* V2 browser cell context with inclusive, zero-based logical bounds.
|
|
168
|
+
* Whole-cell selections clear text targets. Character selections preserve
|
|
169
|
+
* their targets and include the containing cells, including endpoint cells.
|
|
170
|
+
* Exact cell IDs and spans describe merged or nonrectangular selections;
|
|
171
|
+
* only rectangular whole-cell metadata can become a table-cells target.
|
|
139
172
|
*/
|
|
140
173
|
tableSelection?: TableSelectionInfo | null;
|
|
141
174
|
/**
|
|
@@ -176,3 +209,19 @@ export interface SelectionInfo {
|
|
|
176
209
|
*/
|
|
177
210
|
text?: string;
|
|
178
211
|
}
|
|
212
|
+
/** Native source shared by insert and replace; portable captures copy with fresh identities. */
|
|
213
|
+
export type OoxmlContentSource = {
|
|
214
|
+
type: 'ooxml';
|
|
215
|
+
value: string;
|
|
216
|
+
namespaces: Record<string, string>;
|
|
217
|
+
dependencies?: SelectionOoxmlDependency[];
|
|
218
|
+
sourcePartUri?: string;
|
|
219
|
+
} | {
|
|
220
|
+
capture: SelectionExtractOoxmlResult;
|
|
221
|
+
};
|
|
222
|
+
export interface SelectionReleaseSnapshotInput {
|
|
223
|
+
snapshotId: string;
|
|
224
|
+
}
|
|
225
|
+
export interface SelectionReleaseSnapshotResult {
|
|
226
|
+
released: boolean;
|
|
227
|
+
}
|