@docx-editor.dev/core 2.9.2 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/automation.cjs +1 -1
- package/dist/automation.d.cts +14 -5
- package/dist/automation.d.ts +14 -5
- package/dist/automation.js +1 -1
- package/dist/binding.cjs +1 -1
- package/dist/binding.d.cts +78 -13
- package/dist/binding.d.ts +78 -13
- package/dist/binding.js +1 -1
- package/dist/chunk-34BNQUD4.js +10 -0
- package/dist/chunk-5AVHO75P.cjs +19 -0
- package/dist/chunk-6HMSC7UV.js +2 -0
- package/dist/chunk-6JIJOZDW.js +1 -0
- package/dist/chunk-76Y3Y45J.cjs +2 -0
- package/dist/chunk-BP7ANXGA.js +1 -0
- package/dist/chunk-BTQKU64Q.cjs +1 -0
- package/dist/chunk-CRZR6K5Z.js +19 -0
- package/dist/chunk-D5EHDHYV.js +1 -0
- package/dist/chunk-EJATEGJZ.cjs +1 -0
- package/dist/{chunk-PSZH2VXP.js → chunk-GOEBQ26R.js} +1 -1
- package/dist/chunk-GRDFEH5Q.cjs +2 -0
- package/dist/chunk-GWV65NQW.cjs +10 -0
- package/dist/chunk-GXLZCXEH.js +2 -0
- package/dist/chunk-JUQOPVSK.cjs +2 -0
- package/dist/chunk-LAETEBHD.js +1 -0
- package/dist/chunk-M6Z3KFXM.cjs +5 -0
- package/dist/{chunk-YMYCPY5Y.cjs → chunk-OHJQ7GPZ.cjs} +1 -1
- package/dist/chunk-UQFOYZJO.cjs +18 -0
- package/dist/chunk-WPQMPHNR.cjs +1 -0
- package/dist/chunk-WXQ245MQ.js +18 -0
- package/dist/chunk-WZHIFNSU.js +5 -0
- package/dist/chunk-X7A5XART.js +2 -0
- package/dist/chunk-ZKWRCLT2.cjs +1 -0
- package/dist/collaboration/replication.cjs +1 -0
- package/dist/collaboration/replication.d.cts +216 -0
- package/dist/collaboration/replication.d.ts +216 -0
- package/dist/collaboration/replication.js +1 -0
- package/dist/collaboration.cjs +1 -0
- package/dist/collaboration.d.cts +176 -0
- package/dist/collaboration.d.ts +176 -0
- package/dist/collaboration.js +1 -0
- package/dist/contracts/document.d.cts +6 -1
- package/dist/contracts/document.d.ts +6 -1
- package/dist/contracts/editor.cjs +1 -1
- package/dist/contracts/editor.d.cts +8 -9
- package/dist/contracts/editor.d.ts +8 -9
- package/dist/contracts/editor.js +1 -1
- package/dist/contracts/interaction.d.cts +8 -9
- package/dist/contracts/interaction.d.ts +8 -9
- package/dist/contracts/modules.cjs +1 -1
- package/dist/contracts/modules.d.cts +20 -8
- package/dist/contracts/modules.d.ts +20 -8
- package/dist/contracts/modules.js +1 -1
- package/dist/custom-node-writes-CwkYRw3V.d.cts +310 -0
- package/dist/custom-node-writes-JfTn-Sy6.d.ts +310 -0
- package/dist/document-properties-D6Ahr8D6.d.cts +28 -0
- package/dist/document-properties-D6Ahr8D6.d.ts +28 -0
- package/dist/{editor-Cvd7Geoc.d.ts → editor-BogcVHXk.d.ts} +176 -59
- package/dist/{editor-cAEf1uXW.d.cts → editor-C8edZgy5.d.cts} +176 -59
- package/dist/editor.cjs +1 -1
- package/dist/editor.css +1 -7698
- package/dist/editor.d.cts +26 -25
- package/dist/editor.d.ts +26 -25
- package/dist/editor.js +1 -1
- package/dist/failure-BnGjoXf0.d.cts +64 -0
- package/dist/failure-BnGjoXf0.d.ts +64 -0
- package/dist/{index-DRqY5JVF.d.ts → index-BNv-ZLQP.d.ts} +327 -86
- package/dist/{index-wb-iOxfh.d.cts → index-Dn0lOp9Z.d.cts} +327 -86
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +20 -19
- package/dist/index.d.ts +20 -19
- package/dist/index.js +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.d.cts +92 -55
- package/dist/layout.d.ts +92 -55
- package/dist/layout.js +1 -1
- package/dist/{note-properties-jvnw_DGG.d.ts → note-properties-BmoSdyKS.d.ts} +1 -1
- package/dist/{note-properties-CQlxjic_.d.cts → note-properties-BvGfHk5e.d.cts} +1 -1
- package/dist/{omml-equation-Dd3mBep-.d.ts → omml-equation-Ciq5rgb7.d.ts} +1 -1
- package/dist/{omml-equation-BD-LsmWE.d.cts → omml-equation-CqQOt_dD.d.cts} +1 -1
- package/dist/output.cjs +1 -1
- package/dist/output.d.cts +6 -8
- package/dist/output.d.ts +6 -8
- package/dist/output.js +1 -1
- package/dist/{protocol-UuZOcOp7.d.cts → protocol-BB-WP3zk.d.cts} +2 -2
- package/dist/{protocol-C7ahrdUx.d.ts → protocol-Ckl7hWsv.d.ts} +2 -2
- package/dist/{review-items-bdGxFWNA.d.ts → review-items-BdeLNRi2.d.cts} +1 -2
- package/dist/{review-items-B8tffIXj.d.cts → review-items-CkYyXhXM.d.ts} +1 -2
- package/dist/{review-reads-Bxz03tHG.d.cts → review-reads-BOLSBm5w.d.cts} +2 -2
- package/dist/{review-reads-CHODU0LI.d.ts → review-reads-Crf0Xn42.d.ts} +2 -2
- package/dist/{revision-projection-CILpvv4M.d.ts → revision-projection-Ae2CWa8E.d.ts} +1 -1
- package/dist/{revision-projection-Cc4wz30g.d.cts → revision-projection-C2S8PSQm.d.cts} +1 -1
- package/dist/{semantic-cell-selection-BPzx6DdT.d.cts → semantic-cell-selection-C0OFD4D9.d.cts} +4 -4
- package/dist/{semantic-cell-selection-CsHcr-yk.d.ts → semantic-cell-selection-DdmoxC-y.d.ts} +4 -4
- package/dist/{semantic-interaction-D-RZ9Ust.d.ts → semantic-interaction-COyhZ9WH.d.ts} +21 -2
- package/dist/{semantic-interaction-BfWDD_0V.d.cts → semantic-interaction-Cs2jErnt.d.cts} +21 -2
- package/dist/{semantic-paint-WhVtSDJK.d.ts → semantic-paint-UHaj3sBY.d.cts} +2 -2
- package/dist/{semantic-paint-Bd7EqzXV.d.cts → semantic-paint-vA-oLSdV.d.ts} +2 -2
- package/dist/{semantic-records-DadVT_E1.d.cts → semantic-records-5AOQJmLX.d.cts} +20 -5
- package/dist/{semantic-records-DCt-ZwKU.d.ts → semantic-records-9xhwbJ23.d.ts} +20 -5
- package/dist/{shaped-measurer-CninrHr_.d.cts → shaped-measurer-NeF2mPSu.d.cts} +1 -1
- package/dist/{shaped-measurer-B9f4A7QA.d.ts → shaped-measurer-vzsY88oK.d.ts} +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.d.cts +193 -19
- package/dist/store.d.ts +193 -19
- package/dist/store.js +1 -1
- package/dist/tree-op-types-BPyXNxyL.d.cts +3053 -0
- package/dist/tree-op-types-DnzAOnc9.d.ts +3053 -0
- package/dist/{custom-node-writes-D6SGwebL.d.ts → tree-package-fragment-BjZ3RWAS.d.cts} +128 -312
- package/dist/{custom-node-writes-Dy3b20PS.d.cts → tree-package-fragment-CDER0G3B.d.ts} +128 -312
- package/dist/{tree-session-ZuBFOhIh.d.ts → tree-session-contract-BF2FVBOM.d.cts} +52 -106
- package/dist/{tree-session-Df02ajqc.d.cts → tree-session-contract-DhdsFT_z.d.ts} +52 -106
- package/dist/{tree-store-B_sJBMIS.d.cts → tree-store-CNZ3O83s.d.ts} +130 -25
- package/dist/{tree-store-DgETo6Mf.d.ts → tree-store-DfZi7FqY.d.cts} +130 -25
- package/package.json +14 -3
- package/dist/chunk-6JWP2H7K.js +0 -2
- package/dist/chunk-6KNLLEUW.cjs +0 -18
- package/dist/chunk-7ADTI533.cjs +0 -10
- package/dist/chunk-7ETDCPF6.cjs +0 -2
- package/dist/chunk-7I3BSGGS.js +0 -1
- package/dist/chunk-7UU5YFCD.cjs +0 -2
- package/dist/chunk-7VQ7YLW3.cjs +0 -1
- package/dist/chunk-CKDAK3MV.js +0 -10
- package/dist/chunk-DIMEYVNS.js +0 -2
- package/dist/chunk-GQQOL4PV.js +0 -1
- package/dist/chunk-H2656QDI.cjs +0 -1
- package/dist/chunk-KQGENNL5.cjs +0 -15
- package/dist/chunk-LIXPSV4T.js +0 -18
- package/dist/chunk-O4UULRAQ.cjs +0 -5
- package/dist/chunk-SIIFNE6U.js +0 -15
- package/dist/chunk-VXYECPKA.js +0 -5
- package/dist/hf-references-Dvk6De4Q.d.cts +0 -70
- package/dist/hf-references-z5Y4N1ab.d.ts +0 -70
- package/dist/image-resources-BgA9EQxY.d.ts +0 -203
- package/dist/image-resources-BiA-IXgo.d.cts +0 -203
- package/dist/note-nodes-BNCANoGN.d.ts +0 -108
- package/dist/note-nodes-DL-Au22P.d.cts +0 -108
- package/dist/ooxml-package-CdEy9ufK.d.cts +0 -1222
- package/dist/ooxml-package-CdEy9ufK.d.ts +0 -1222
- package/dist/tree-op-types-CnRb7AYo.d.ts +0 -1589
- package/dist/tree-op-types-D1vNJ7XC.d.cts +0 -1589
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { h as RevisionAttributionInput, i as DrawingTreeDocOp, a as TreeOpRejection, T as TreeDocOp } from './tree-op-types-CnRb7AYo.js';
|
|
4
|
-
import { c as HeaderFooterKind, H as HeaderFooterVariant } from './hf-references-z5Y4N1ab.js';
|
|
5
|
-
import { N as NoteKind } from './note-nodes-BNCANoGN.js';
|
|
6
|
-
import { T as TreeModelChange, a as TreeStoryRef, b as TreeDocumentStore, c as TransactionContext, d as TransactOptions, S as SelectionMark, e as TreeDocumentCheckpoint } from './tree-store-DgETo6Mf.js';
|
|
1
|
+
import { b as OoxmlPackage, y as SupportedImageMime, O as OoxmlPart, a as OoxmlNode, g as OoxmlElement, E as RevisionAttributionInput, C as ImageDecodePort, F as DrawingTreeDocOp, r as TreeOpRejection, T as TreeDocOp } from './tree-op-types-BPyXNxyL.cjs';
|
|
2
|
+
import { N as NoteKind, T as TreeModelChange, a as TreeDocumentStore, c as TreeStoryRef, d as TransactionContext, b as TransactOptions, S as SelectionMark, e as TreeDocumentCheckpoint } from './tree-store-DfZi7FqY.cjs';
|
|
7
3
|
|
|
8
4
|
/** A freshly allocated drawing property id, or the reason one could not be minted. */
|
|
9
5
|
type DrawingPropertyIdResult = {
|
|
@@ -18,8 +14,13 @@ type DrawingPropertyIdResult = {
|
|
|
18
14
|
*
|
|
19
15
|
* Package-wide rather than per-part: Word treats these ids as document-global, and a collision
|
|
20
16
|
* makes it renumber on open.
|
|
17
|
+
*
|
|
18
|
+
* Solo: `highest + 1`, the dense sequence Word writes. With a collaboration actor bound —
|
|
19
|
+
* explicit argument, or the open store transaction — the id is the next unused value in that
|
|
20
|
+
* actor's stripe. Two peers inserting a picture from one snapshot otherwise both mint `id="1"`,
|
|
21
|
+
* and the merged document carries two drawings under one document-global id.
|
|
21
22
|
*/
|
|
22
|
-
declare function allocateDrawingPropertyId(pkg: OoxmlPackage): DrawingPropertyIdResult;
|
|
23
|
+
declare function allocateDrawingPropertyId(pkg: OoxmlPackage, actorId?: string): DrawingPropertyIdResult;
|
|
23
24
|
/**
|
|
24
25
|
* Store raw bytes for a part and declare its exact content type.
|
|
25
26
|
*
|
|
@@ -62,103 +63,72 @@ interface ExternalImageFetchPort {
|
|
|
62
63
|
}>>;
|
|
63
64
|
}
|
|
64
65
|
|
|
65
|
-
/**
|
|
66
|
-
type
|
|
66
|
+
/** `w:headerReference w:type` vocabulary (ECMA-376 §17.10.5): default, first page, even pages. */
|
|
67
|
+
type HeaderFooterVariant = 'default' | 'first' | 'even';
|
|
68
|
+
/** Header vs footer region kind for chrome and lifecycle ops. */
|
|
69
|
+
type HeaderFooterKind = 'header' | 'footer';
|
|
70
|
+
/**
|
|
71
|
+
* A section's resolved header and footer parts, by variant.
|
|
72
|
+
*
|
|
73
|
+
* The `even` variant is only honoured when `w:evenAndOddHeaders` is set in settings.xml —
|
|
74
|
+
* without it Word ignores an authored even header, and so does this.
|
|
75
|
+
*/
|
|
76
|
+
interface HeaderFooterParts {
|
|
77
|
+
readonly headers: ReadonlyMap<HeaderFooterVariant, OoxmlPart>;
|
|
78
|
+
readonly footers: ReadonlyMap<HeaderFooterVariant, OoxmlPart>;
|
|
79
|
+
/** `w:evenAndOddHeaders` in settings.xml — without it the `even` variant is ignored. */
|
|
80
|
+
readonly evenAndOddHeaders: boolean;
|
|
81
|
+
/** Whether this section enables first-page header/footer furniture (`w:titlePg`). */
|
|
82
|
+
readonly titlePage: boolean;
|
|
83
|
+
}
|
|
67
84
|
/**
|
|
68
|
-
* One
|
|
85
|
+
* One resolved furniture slot with enough metadata for "Same as previous" chrome.
|
|
69
86
|
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
87
|
+
* `inherited: true` means this section has no declared reference for the slot and the
|
|
88
|
+
* part comes from a predecessor. The first section never reports inherited — omitting a
|
|
89
|
+
* ref there is blank furniture, not inheritance from a later section.
|
|
73
90
|
*/
|
|
74
|
-
interface
|
|
75
|
-
|
|
76
|
-
readonly family: string;
|
|
77
|
-
readonly style: FontStyleKey;
|
|
78
|
-
/** Deobfuscated bytes, ready to be offered to a font validator. */
|
|
79
|
-
readonly bytes: Uint8Array;
|
|
80
|
-
/** The part they came from, for diagnostics. */
|
|
91
|
+
interface HeaderFooterSlotMeta {
|
|
92
|
+
readonly part: OoxmlPart;
|
|
81
93
|
readonly partName: string;
|
|
94
|
+
readonly rId: string;
|
|
95
|
+
readonly inherited: boolean;
|
|
82
96
|
}
|
|
83
|
-
/**
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
* than obfuscated, which is indistinguishable from a damaged file at the point it fails.
|
|
90
|
-
*
|
|
91
|
-
* Pure XOR, so the same operation obfuscates and deobfuscates.
|
|
92
|
-
*/
|
|
93
|
-
declare function deobfuscateFont(bytes: Uint8Array, fontKey: string): Uint8Array | null;
|
|
94
|
-
/** Limits and instrumentation for reading embedded fonts out of a package. */
|
|
95
|
-
interface ReadEmbeddedFontsOptions {
|
|
96
|
-
/** Refuse a font part larger than this. Defaults to 16 MB. */
|
|
97
|
-
readonly maxFontBytes?: number;
|
|
98
|
-
/** Refuse more than this many fonts. Defaults to 64. */
|
|
99
|
-
readonly maxFonts?: number;
|
|
97
|
+
/** Per-section resolution including declared-vs-inherited metadata. */
|
|
98
|
+
interface HeaderFooterSectionResolution {
|
|
99
|
+
readonly headers: ReadonlyMap<HeaderFooterVariant, HeaderFooterSlotMeta>;
|
|
100
|
+
readonly footers: ReadonlyMap<HeaderFooterVariant, HeaderFooterSlotMeta>;
|
|
101
|
+
readonly evenAndOddHeaders: boolean;
|
|
102
|
+
readonly titlePage: boolean;
|
|
100
103
|
}
|
|
101
104
|
/**
|
|
102
|
-
*
|
|
105
|
+
* `w:sectPr` nodes in section order, aligned with layout's `enumerateDocumentSections`.
|
|
103
106
|
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
107
|
+
* `null` means a section with no `w:sectPr` node (Word defaults, inherits HF from previous).
|
|
108
|
+
* Paragraph-level breaks first; the final entry covers remaining blocks (body-level or null).
|
|
106
109
|
*/
|
|
107
|
-
declare function
|
|
108
|
-
|
|
109
|
-
/** The two list kinds a toolbar offers. */
|
|
110
|
-
type ListKind = 'bullet' | 'ordered';
|
|
111
|
-
interface EnsuredListDefinition {
|
|
112
|
-
readonly pkg: OoxmlPackage;
|
|
113
|
-
/** The `w:numId` a paragraph's `w:numPr` should name. */
|
|
114
|
-
readonly numId: string;
|
|
115
|
-
}
|
|
110
|
+
declare function collectSectionPropertyNodes(root: OoxmlNode): Array<OoxmlElement | null>;
|
|
116
111
|
/**
|
|
117
|
-
*
|
|
112
|
+
* Resolve header/footer parts for every section with declared-vs-inherited metadata.
|
|
118
113
|
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
* continue an earlier list. Returns null only when the part cannot be built at all.
|
|
114
|
+
* Index aligns with `enumerateDocumentSections` in the layout package. Existing merged
|
|
115
|
+
* maps stay available via {@link resolveHeaderFooterPartsBySection}.
|
|
122
116
|
*/
|
|
123
|
-
declare function
|
|
117
|
+
declare function resolveHeaderFooterResolutionBySection(pkg: OoxmlPackage): readonly HeaderFooterSectionResolution[];
|
|
124
118
|
/**
|
|
125
|
-
*
|
|
126
|
-
* level, or refuse.
|
|
127
|
-
*
|
|
128
|
-
* Word never greys Increase Indent out on a list item: demoting past the deepest level a
|
|
129
|
-
* `w:abstractNum` declares makes Word DEFINE the level, cycling its stock bullets
|
|
130
|
-
* (Symbol •, Courier `o`, Wingdings ▪) or number formats (decimal, lowerLetter,
|
|
131
|
-
* lowerRoman) by depth. This is that write. An already-declared level returns the package
|
|
132
|
-
* unchanged, so callers may ask first and act second without a second lookup.
|
|
119
|
+
* Resolve header/footer parts for every section, applying OOXML inheritance.
|
|
133
120
|
*
|
|
134
|
-
*
|
|
135
|
-
* linked style's definition, and a `w:lvl` grafted here would be shadowed the moment the
|
|
136
|
-
* link resolves.
|
|
121
|
+
* Index aligns with `enumerateDocumentSections` in the layout package.
|
|
137
122
|
*/
|
|
138
|
-
declare function
|
|
139
|
-
|
|
140
|
-
/** One bookmark's name and the range its marker pair currently encloses. */
|
|
141
|
-
interface BookmarkAnchor {
|
|
142
|
-
readonly name: string;
|
|
143
|
-
/** Canonical node id of the paragraph the marker sits in. */
|
|
144
|
-
readonly paragraphId: string;
|
|
145
|
-
/** UTF-16 offset within that paragraph, in `paragraphTextOf`'s vocabulary. */
|
|
146
|
-
readonly offset: number;
|
|
147
|
-
}
|
|
148
|
-
/** Bookmarks by name. A name the document declares twice resolves to the first in order. */
|
|
149
|
-
type BookmarkIndex = ReadonlyMap<string, BookmarkAnchor>;
|
|
123
|
+
declare function resolveHeaderFooterPartsBySection(pkg: OoxmlPackage): readonly HeaderFooterParts[];
|
|
150
124
|
/**
|
|
151
|
-
*
|
|
125
|
+
* Resolve the main-document header/footer references to their parts, gated by the
|
|
126
|
+
* settings the section actually declares.
|
|
152
127
|
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
* target move when an edit far away happens to duplicate a name.
|
|
156
|
-
*
|
|
157
|
-
* The offset is measured the way the ops measure: text of the runs before the marker inside
|
|
158
|
-
* its own paragraph, hyperlink runs included, so the position a jump places the caret at is a
|
|
159
|
-
* position `setSelection` accepts.
|
|
128
|
+
* Returns the FINAL section's effective parts (after inheritance). Multi-section hosts
|
|
129
|
+
* should prefer `resolveHeaderFooterPartsBySection`.
|
|
160
130
|
*/
|
|
161
|
-
declare function
|
|
131
|
+
declare function resolveHeaderFooterParts(pkg: OoxmlPackage): HeaderFooterParts;
|
|
162
132
|
|
|
163
133
|
/** Lifecycle impact — furniture always reaches multiple pages; never narrower than flow-structural. */
|
|
164
134
|
type HeaderFooterLifecycleImpact = 'flow-structural' | 'global';
|
|
@@ -429,26 +399,6 @@ interface CascadeDeletedNoteReferencesOptions {
|
|
|
429
399
|
*/
|
|
430
400
|
declare function cascadeDeletedNoteReferences(before: OoxmlPackage, after: OoxmlPackage, options?: CascadeDeletedNoteReferencesOptions): OoxmlPackage | null;
|
|
431
401
|
|
|
432
|
-
/** What the document asks for. Every field defaults to "the document said nothing". */
|
|
433
|
-
interface DocumentTrackingSettings {
|
|
434
|
-
/** `w:trackRevisions` — the document asks for edits to be tracked. */
|
|
435
|
-
readonly trackRevisions: boolean;
|
|
436
|
-
/**
|
|
437
|
-
* `w:documentProtection/@w:edit="trackedChanges"` — tracking may not be turned OFF.
|
|
438
|
-
*
|
|
439
|
-
* Advisory. Presenting it as enforcement would be a lie about a file anyone can edit.
|
|
440
|
-
*/
|
|
441
|
-
readonly restrictedToTrackedChanges: boolean;
|
|
442
|
-
/** `w:doNotTrackMoves` — write a move as a delete and an insert. */
|
|
443
|
-
readonly doNotTrackMoves: boolean;
|
|
444
|
-
/** `w:doNotTrackFormatting` — apply formatting without recording a `w:rPrChange`. */
|
|
445
|
-
readonly doNotTrackFormatting: boolean;
|
|
446
|
-
}
|
|
447
|
-
/** The frozen "nothing is tracked" settings — what a document with no `w:trackChanges` gets. */
|
|
448
|
-
declare const NO_TRACKING_SETTINGS: DocumentTrackingSettings;
|
|
449
|
-
/** Read the tracking settings from a `settings.xml` root, or the defaults when it has none. */
|
|
450
|
-
declare function readTrackingSettings(settingsRoot: OoxmlNode | null | undefined): DocumentTrackingSettings;
|
|
451
|
-
|
|
452
402
|
interface InsertImageInput {
|
|
453
403
|
readonly paragraphId: string;
|
|
454
404
|
readonly offset: number;
|
|
@@ -462,10 +412,24 @@ interface InsertImageInput {
|
|
|
462
412
|
readonly title?: string;
|
|
463
413
|
readonly description?: string;
|
|
464
414
|
readonly hyperlink?: string;
|
|
415
|
+
/** Present in suggesting mode: the inserted drawing's run goes into a `w:ins`. */
|
|
416
|
+
readonly revision?: RevisionAttributionInput;
|
|
417
|
+
/**
|
|
418
|
+
* Collaboration actor for the ids this insert mints — `wp:docPr/@id`, the image
|
|
419
|
+
* relationship, and a hyperlink relationship when one is asked for.
|
|
420
|
+
*
|
|
421
|
+
* EXPLICIT, and not the ambient `runWithTransactionActor` binding, because this entry is
|
|
422
|
+
* async: the mint runs after `await validateEmbeddedImageForCommit` and the ambient actor
|
|
423
|
+
* is synchronous-only. A wrap around the call would compile, read as correct, and be gone
|
|
424
|
+
* by the time the id is taken. Omitted (solo) keeps Word's dense `highest + 1` sequence.
|
|
425
|
+
*/
|
|
426
|
+
readonly actorId?: string;
|
|
465
427
|
}
|
|
466
428
|
interface ReplaceImageOptions {
|
|
467
429
|
readonly expectedPackageRevision: number;
|
|
468
430
|
readonly commitGuard?: () => boolean;
|
|
431
|
+
/** Collaboration actor for the replacement's minted ids. See {@link InsertImageInput.actorId}. */
|
|
432
|
+
readonly actorId?: string;
|
|
469
433
|
}
|
|
470
434
|
type ImageIntentResult = (Extract<PackageTransactResult, {
|
|
471
435
|
ok: true;
|
|
@@ -481,6 +445,13 @@ interface ApplyImagePropertiesInput {
|
|
|
481
445
|
readonly hyperlink: string | null;
|
|
482
446
|
}
|
|
483
447
|
|
|
448
|
+
/** Attribution stamped on one remote canonical publication. */
|
|
449
|
+
interface RemotePackageAttribution {
|
|
450
|
+
readonly origin: string;
|
|
451
|
+
readonly actorId?: string;
|
|
452
|
+
readonly operationId?: string;
|
|
453
|
+
}
|
|
454
|
+
|
|
484
455
|
type NoteCascadeFn = (before: OoxmlPackage, after: OoxmlPackage) => OoxmlPackage | null;
|
|
485
456
|
/**
|
|
486
457
|
* Editable story target.
|
|
@@ -571,13 +542,11 @@ declare class TreePackageStore {
|
|
|
571
542
|
private compositionSession;
|
|
572
543
|
private commitCounter;
|
|
573
544
|
/**
|
|
574
|
-
* Memo for {@link currentPackage}, keyed on
|
|
575
|
-
*
|
|
576
|
-
*
|
|
577
|
-
*
|
|
578
|
-
*
|
|
579
|
-
* Packages and parts are frozen-immutable, so a matching tuple proves the merged
|
|
580
|
-
* snapshot cannot differ; no explicit invalidation exists anywhere.
|
|
545
|
+
* Memo for {@link currentPackage}, keyed on that method's COMPLETE read set by object identity:
|
|
546
|
+
* the shell, the body part, and each open story's part in map order. Identity is the only sound
|
|
547
|
+
* key — `packageRevision` is excluded, because shell writes (`replacePackageShell`, story-store
|
|
548
|
+
* grafts, lazy opens) move `this.pkg` or a `store.part` without bumping it. Parts are frozen, so
|
|
549
|
+
* a matching tuple proves the snapshot cannot differ; nothing invalidates explicitly.
|
|
581
550
|
*/
|
|
582
551
|
private currentPackageMemo;
|
|
583
552
|
constructor(pkg: OoxmlPackage, main: OoxmlPart, options?: TreePackageStoreOptions);
|
|
@@ -617,6 +586,7 @@ declare class TreePackageStore {
|
|
|
617
586
|
* cascades the note body in the same package undo unit.
|
|
618
587
|
*/
|
|
619
588
|
transact(scope: StoryScope, build: (ctx: TransactionContext) => void, options?: Omit<TransactOptions, 'story' | 'minimumImpact'>): PackageTransactResult;
|
|
589
|
+
private commitStoryTransaction;
|
|
620
590
|
/** Whether a package-wide IME composition session is open on any story. */
|
|
621
591
|
compositionSessionOpen(): boolean;
|
|
622
592
|
beginComposition(scope: StoryScope, selectionBefore?: SelectionMark | null): boolean;
|
|
@@ -627,6 +597,7 @@ declare class TreePackageStore {
|
|
|
627
597
|
* restores the entire package atomically (parts, rels, content-types, settings).
|
|
628
598
|
*/
|
|
629
599
|
applyLifecycleOp(op: HeaderFooterLifecycleOp | NoteLifecycleOp | TreeDocOp): PackageTransactResult;
|
|
600
|
+
private commitLifecycleOp;
|
|
630
601
|
undo(): TreeModelChange | null;
|
|
631
602
|
redo(): TreeModelChange | null;
|
|
632
603
|
selectionForUndo(): SelectionMark | null;
|
|
@@ -637,16 +608,18 @@ declare class TreePackageStore {
|
|
|
637
608
|
openedStoryCount(): number;
|
|
638
609
|
/** See {@link openStoryTokenOf}. */
|
|
639
610
|
openStoryToken(): string;
|
|
640
|
-
/**
|
|
641
|
-
* Insert a validated raster image as one package undo unit (task 12).
|
|
642
|
-
*/
|
|
611
|
+
/** Insert a validated raster image as one package undo unit (task 12). */
|
|
643
612
|
insertImage(scope: StoryScope, input: InsertImageInput): Promise<ImageIntentResult>;
|
|
613
|
+
/** Land a clipboard fragment (resource merge + blocks) as one package undo unit. */
|
|
614
|
+
applyFragmentPaste(scope: StoryScope, input: FragmentPasteInput): FragmentPasteResult;
|
|
644
615
|
/** Replace a picture drawing's embedded media in one package undo unit. */
|
|
645
616
|
replaceImage(scope: StoryScope, drawingNodeId: string, bytes: Uint8Array, mime: SupportedImageMime, decodePort: ImageDecodePort, options: ReplaceImageOptions): Promise<ImageIntentResult>;
|
|
646
617
|
/** Delete a picture drawing and collect orphaned media in one package undo unit. */
|
|
647
618
|
deleteImage(scope: StoryScope, drawingNodeId: string): ImageIntentResult;
|
|
619
|
+
/** Propose the deletion as a tracked change: the drawing goes into a `w:del`, media stays. */
|
|
620
|
+
deleteImageTracked(scope: StoryScope, drawingNodeId: string, revision: RevisionAttributionInput): ImageIntentResult;
|
|
648
621
|
/** Fetch external bytes explicitly and embed them; no fetch on open/load. */
|
|
649
|
-
embedExternalImage(scope: StoryScope, drawingNodeId: string, url: string, port: ExternalImageFetchPort, signal: AbortSignal, decodePort: ImageDecodePort): Promise<ImageIntentResult>;
|
|
622
|
+
embedExternalImage(scope: StoryScope, drawingNodeId: string, url: string, port: ExternalImageFetchPort, signal: AbortSignal, decodePort: ImageDecodePort, actorId?: string): Promise<ImageIntentResult>;
|
|
650
623
|
/** Metadata plus hyperlink target creation in one package transaction. */
|
|
651
624
|
setDrawingMetadataWithHyperlink(scope: StoryScope, drawingNodeId: string, title: string, description: string, hyperlink: string | null): ImageIntentResult;
|
|
652
625
|
/** Properties batch with hyperlink relationship create/update/remove in one package unit. */
|
|
@@ -678,17 +651,23 @@ declare class TreePackageStore {
|
|
|
678
651
|
/**
|
|
679
652
|
* Record a write that spanned SEVERAL parts as one package undo unit.
|
|
680
653
|
*
|
|
681
|
-
* A comment
|
|
682
|
-
* `commentsExtended.xml`, the markers in the story — and those writes reach the store
|
|
683
|
-
*
|
|
684
|
-
*
|
|
685
|
-
*
|
|
686
|
-
*
|
|
687
|
-
* from to this instead, which is the same promotion the note cascade does.
|
|
654
|
+
* A comment spans parts — the body in `comments.xml`, the thread record in
|
|
655
|
+
* `commentsExtended.xml`, the markers in the story — and those writes reach the store through
|
|
656
|
+
* the story store rather than `transact`. The story store's history cannot undo them: `undo()`
|
|
657
|
+
* on a story pointer syncs the STORY PART alone, so undoing a comment restored the markers and
|
|
658
|
+
* left the body, or the reverse. The caller discards the story entry and hands the package it
|
|
659
|
+
* started from to this instead, the same promotion the note cascade does.
|
|
688
660
|
*/
|
|
689
661
|
adoptPackageUnit(before: OoxmlPackage): void;
|
|
690
662
|
/** Install a full package snapshot (public seam for post-fetch cleanup). */
|
|
691
663
|
installPackageSnapshot(snapshot: OoxmlPackage): void;
|
|
664
|
+
/**
|
|
665
|
+
* Install a package this replica did not author, verbatim. No shell merge — see
|
|
666
|
+
* `publishRemoteCanonicalPackage` for why merging one here diverges two replicas.
|
|
667
|
+
*/
|
|
668
|
+
installAuthoritativePackageSnapshot(snapshot: OoxmlPackage): void;
|
|
669
|
+
/** Publish one remotely materialized canonical package as one revision. */
|
|
670
|
+
publishRemotePackage(pkg: OoxmlPackage, attribution: RemotePackageAttribution): PackageTransactResult;
|
|
692
671
|
/**
|
|
693
672
|
* Replace the package shell while preserving opened stores. Used when numbering /
|
|
694
673
|
* content-types mutate the package outside story trees.
|
|
@@ -720,205 +699,42 @@ declare class TreePackageStore {
|
|
|
720
699
|
* live and not history-reachable (see `pruneUnreachableHyperlinkShell`).
|
|
721
700
|
*/
|
|
722
701
|
private evictUnreachableStories;
|
|
723
|
-
private retainedStoryPartNames;
|
|
724
|
-
/**
|
|
725
|
-
* Owners whose scoped hyperlink shell must survive while furniture/notes parts are
|
|
726
|
-
* temporarily absent: opened/parked story retention plus every part name that package
|
|
727
|
-
* history can still restore (even when the story store was never opened).
|
|
728
|
-
*/
|
|
729
|
-
private retainedHyperlinkOwnerParts;
|
|
730
|
-
private retainPointerStoryParts;
|
|
731
|
-
private retainPointerHyperlinkOwners;
|
|
732
702
|
private publish;
|
|
733
703
|
private publishSynthetic;
|
|
734
704
|
}
|
|
735
705
|
|
|
736
|
-
/**
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
* `data` is opaque here. The lane that owns a schema is the one that declared it, and a store
|
|
740
|
-
* that parsed payloads would be a second opinion about what a host's node means.
|
|
741
|
-
*/
|
|
742
|
-
interface CustomNodePayloadWrite {
|
|
743
|
-
/** Namespace of the store's root element — what identifies one store among several. */
|
|
744
|
-
readonly namespaceUri: string;
|
|
745
|
-
/** Local name of that root. An NCName; anything else refuses. */
|
|
746
|
-
readonly rootLocalName: string;
|
|
747
|
-
/** The node's own id, which the binding's xpath quotes. */
|
|
748
|
-
readonly nodeId: string;
|
|
749
|
-
/** The text the control shows. Word paints this from the store, so an empty one is an empty chip. */
|
|
750
|
-
readonly label: string;
|
|
751
|
-
/** The payload, serialized. JSON by convention; never parsed here. */
|
|
752
|
-
readonly data: string;
|
|
753
|
-
}
|
|
754
|
-
/** Where the control goes, what it says, and the payload it carries. */
|
|
755
|
-
interface InsertCustomNodeWrite {
|
|
706
|
+
/** Decoded fragment payloads above this cap are refused before any package work. */
|
|
707
|
+
declare const MAX_FRAGMENT_DECODED_BYTES: number;
|
|
708
|
+
interface FragmentPasteInput {
|
|
756
709
|
readonly paragraphId: string;
|
|
757
710
|
readonly offset: number;
|
|
711
|
+
/** The fragment package zip (from the clipboard codec or the HTML projection). */
|
|
712
|
+
readonly fragmentBytes: Uint8Array;
|
|
713
|
+
readonly lastMarkCovered: boolean;
|
|
714
|
+
/** Ops that clear the current selection first (the surface's deleteSelectionPlan). */
|
|
715
|
+
readonly priorOps?: readonly TreeDocOp[];
|
|
758
716
|
/**
|
|
759
|
-
*
|
|
760
|
-
*
|
|
761
|
-
* The node's label REPLACES the words it covered, because that is what turning a stretch of a
|
|
762
|
-
* sentence into a citation means. Removed inside the same transaction, so a refused insert
|
|
763
|
-
* leaves the text where it was.
|
|
764
|
-
*/
|
|
765
|
-
readonly replaceUntil?: number;
|
|
766
|
-
/**
|
|
767
|
-
* Rewrite an existing control: it and the payload it bound go first, in this transaction.
|
|
717
|
+
* Collaboration actor for the ids this paste mints.
|
|
768
718
|
*
|
|
769
|
-
*
|
|
770
|
-
*
|
|
771
|
-
*
|
|
772
|
-
*
|
|
719
|
+
* A paste freshens three package-wide namespaces — bookmark `@w:id`, revision `@w:id` and
|
|
720
|
+
* `wp:docPr/@id` — and the merge reads the actor off the open transaction. Without one, two
|
|
721
|
+
* replicas pasting the same fragment from one snapshot mint the same numbers, and only the
|
|
722
|
+
* merged document shows it. Omitted (solo) keeps Word's dense sequences.
|
|
773
723
|
*/
|
|
774
|
-
readonly
|
|
775
|
-
readonly tag: string;
|
|
776
|
-
readonly text: string;
|
|
777
|
-
readonly alias?: string;
|
|
778
|
-
/** Defaults to none. Callers that want Word's own "cannot type into it" pass `contentLocked`. */
|
|
779
|
-
readonly lock?: 'sdtLocked' | 'sdtContentLocked' | 'contentLocked';
|
|
780
|
-
/** Omitted authors an ordinary tagged control with no store — the pre-payload behaviour. */
|
|
781
|
-
readonly payload?: CustomNodePayloadWrite;
|
|
724
|
+
readonly actorId?: string;
|
|
782
725
|
}
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
type CustomNodeWriteRejection = TreeOpRejection
|
|
790
|
-
/** The id, root name or namespace cannot be spelled in an XPath, so no binding could name it. */
|
|
791
|
-
| 'unaddressable-payload'
|
|
792
|
-
/** The store could not be authored — see `withCustomXmlDataPart` for every way that happens. */
|
|
793
|
-
| 'store-not-authored'
|
|
794
|
-
/** The payload or the label is past the cap. */
|
|
795
|
-
| 'payload-too-large';
|
|
796
|
-
type CustomNodeWriteResult = {
|
|
797
|
-
readonly ok: true;
|
|
798
|
-
readonly change: TreeModelChange | null;
|
|
799
|
-
/**
|
|
800
|
-
* The control this write authored, when it authored one. A rewrite replaces the control
|
|
801
|
-
* rather than editing it, so the id the caller passed in names nothing afterwards.
|
|
802
|
-
*/
|
|
803
|
-
readonly nodeId?: string;
|
|
804
|
-
} | {
|
|
805
|
-
readonly ok: false;
|
|
806
|
-
readonly reason: CustomNodeWriteRejection;
|
|
807
|
-
readonly detail?: string;
|
|
808
|
-
};
|
|
809
|
-
/**
|
|
810
|
-
* The largest payload one node may carry, in UTF-16 code units.
|
|
811
|
-
*
|
|
812
|
-
* Same figure as the read side's (`parseCustomNodeData`) and for the same reason: far past any
|
|
813
|
-
* legitimate chip, far short of anything that hurts. Checked on the WRITE too, so a document
|
|
814
|
-
* cannot be authored here holding a payload the reader will later refuse to parse.
|
|
815
|
-
*/
|
|
816
|
-
declare const MAX_CUSTOM_NODE_PAYLOAD_LENGTH: number;
|
|
817
|
-
/** The longest label a binding may paint. Word renders it as the control's whole content. */
|
|
818
|
-
declare const MAX_CUSTOM_NODE_LABEL_LENGTH = 4096;
|
|
819
|
-
/**
|
|
820
|
-
* Insert one custom node, with its payload, as a single transaction.
|
|
821
|
-
*
|
|
822
|
-
* Answers the store transaction's own change so the caller can publish it — a payload write is a
|
|
823
|
-
* package write reaching through a story store, exactly as a comment is, and the coordinator
|
|
824
|
-
* needs the change to know which paragraphs went dirty.
|
|
825
|
-
*/
|
|
826
|
-
declare function insertCustomNodeWrite(store: TreeDocumentStore, write: InsertCustomNodeWrite,
|
|
827
|
-
/**
|
|
828
|
-
* The part the customXml store hangs off, defaulting to the story being written.
|
|
829
|
-
*
|
|
830
|
-
* A chip in a header is written against the HEADER store, but Word enumerates the data
|
|
831
|
-
* store from the main document part — a store authored off a header is one Word never
|
|
832
|
-
* sees. So the caller passes the main part while the control itself lands in the story.
|
|
833
|
-
*/
|
|
834
|
-
dataOwnerPartName?: string): CustomNodeWriteResult;
|
|
835
|
-
/**
|
|
836
|
-
* Remove a control and, in the same transaction, the payload it bound.
|
|
837
|
-
*
|
|
838
|
-
* The sweep would collect the node eventually — that is what makes deletion in Word survivable —
|
|
839
|
-
* but "eventually" is the next open, and a document saved in between carries a payload for a
|
|
840
|
-
* chip that is gone. Doing it here means the ordinary case is exact and the sweep is a backstop.
|
|
841
|
-
*/
|
|
842
|
-
declare function removeCustomNodeWrite(store: TreeDocumentStore, controlNodeId: string): CustomNodeWriteResult;
|
|
843
|
-
/**
|
|
844
|
-
* What one sweep collected, or why it collected nothing.
|
|
845
|
-
*
|
|
846
|
-
* `ok: false` is NOT "the document was already tidy" — that is `ok: true` with an empty
|
|
847
|
-
* `removed`. It means a store this sweep was asked to tidy refused the rewrite, which a caller
|
|
848
|
-
* that keeps saving into the same document should know about rather than silently retry forever.
|
|
849
|
-
*/
|
|
850
|
-
type CustomNodeSweepResult = {
|
|
851
|
-
readonly ok: true;
|
|
852
|
-
readonly pkg: OoxmlPackage;
|
|
853
|
-
/** Node ids removed, across every store swept. Empty means there were no orphans. */
|
|
854
|
-
readonly removed: readonly string[];
|
|
855
|
-
} | {
|
|
856
|
-
readonly ok: false;
|
|
857
|
-
readonly reason: string;
|
|
858
|
-
};
|
|
859
|
-
/**
|
|
860
|
-
* Drop every payload no control binds, in the stores whose namespaces a host claims.
|
|
861
|
-
*
|
|
862
|
-
* ON OPEN, NOT ON SAVE. A chip cut to the clipboard is unbound for as long as it sits there, so a
|
|
863
|
-
* save mid-cut would destroy the payload the user is about to paste. On open the only unbound
|
|
864
|
-
* nodes are ones a control genuinely lost — deleted here, or deleted in Word, which is the case
|
|
865
|
-
* nothing else can collect.
|
|
866
|
-
*
|
|
867
|
-
* `namespaces` is the claim, and it is what keeps this off other people's stores: Word's own Cover
|
|
868
|
-
* Page Properties store rides in most templates, and a sweep that walked every customXml part
|
|
869
|
-
* would be deleting from it on the strength of a name collision.
|
|
870
|
-
*/
|
|
871
|
-
declare function sweepCustomNodePayloads(pkg: OoxmlPackage, storyPartName: string, namespaces: readonly string[]): CustomNodeSweepResult;
|
|
872
|
-
/** One control's payload, as the store holds it. Both strings are untrusted file input. */
|
|
873
|
-
interface CustomNodePayloadRead {
|
|
874
|
-
/** The store node's own id. */
|
|
875
|
-
readonly nodeId: string;
|
|
876
|
-
/** The text Word paints the control from. */
|
|
877
|
-
readonly label: string;
|
|
878
|
-
/** The payload as authored. JSON by convention, unparsed here. */
|
|
879
|
-
readonly data: string;
|
|
880
|
-
}
|
|
881
|
-
/**
|
|
882
|
-
* The payload every control in a story binds to, keyed by the CONTROL's canonical node id.
|
|
883
|
-
*
|
|
884
|
-
* Keyed by the control rather than by the store node because that is the question a reader
|
|
885
|
-
* actually has — "what does this chip carry" — and because two stores may each hold a `cx1`.
|
|
886
|
-
* Resolved here rather than by a capability package: the stores are package parts, and a
|
|
887
|
-
* derivation that only gets story parts has no way to reach them.
|
|
888
|
-
*
|
|
889
|
-
* Every store the story relates to, so a document carrying two definitions' payloads answers
|
|
890
|
-
* for both without anyone naming a namespace.
|
|
891
|
-
*/
|
|
892
|
-
declare function customNodePayloadsByControl(pkg: OoxmlPackage, storyPartName: string,
|
|
893
|
-
/**
|
|
894
|
-
* The part that RELATES the customXml store, when it is not the story's own.
|
|
895
|
-
*
|
|
896
|
-
* Two different questions wear one name here: which part holds the CONTROLS, and which part
|
|
897
|
-
* relates the STORE they bind into. Word only reads a store hung off the main document part,
|
|
898
|
-
* so {@link writeCustomNode} already takes them separately — this read did not, and answered
|
|
899
|
-
* with the body's controls whatever story it was asked about. A chip in a header therefore
|
|
900
|
-
* read as having no payload at all, and an update that meant to keep the existing data
|
|
901
|
-
* dropped it.
|
|
902
|
-
*/
|
|
903
|
-
dataOwnerPartName?: string): ReadonlyMap<string, CustomNodePayloadRead>;
|
|
904
|
-
/** Every payload one store holds, for a caller resolving a control's `data`. */
|
|
905
|
-
declare function customNodePayloadsOf(pkg: OoxmlPackage, storyPartName: string, namespaceUri: string): ReadonlyMap<string, {
|
|
906
|
-
readonly label: string;
|
|
907
|
-
readonly data: string;
|
|
726
|
+
type FragmentPasteResult = (Extract<PackageTransactResult, {
|
|
727
|
+
ok: true;
|
|
728
|
+
}> & {
|
|
729
|
+
readonly blockCount: number;
|
|
730
|
+
}) | Extract<PackageTransactResult, {
|
|
731
|
+
ok: false;
|
|
908
732
|
}>;
|
|
909
733
|
/**
|
|
910
|
-
*
|
|
911
|
-
*
|
|
912
|
-
*
|
|
913
|
-
* session has already installed that, and handing it back would invite a caller to install it
|
|
914
|
-
* twice.
|
|
734
|
+
* Read the fragment through the bounded file-open trust boundary, merge its resources,
|
|
735
|
+
* and land its blocks — all inside one transaction. Any refusal leaves the document
|
|
736
|
+
* exactly as it was; the caller (the paste router) degrades to the next flavour.
|
|
915
737
|
*/
|
|
916
|
-
|
|
917
|
-
readonly ok: true;
|
|
918
|
-
readonly removed: readonly string[];
|
|
919
|
-
} | {
|
|
920
|
-
readonly ok: false;
|
|
921
|
-
readonly reason: string;
|
|
922
|
-
};
|
|
738
|
+
declare function applyFragmentPaste(store: TreePackageStore, scope: StoryScope, input: FragmentPasteInput): FragmentPasteResult;
|
|
923
739
|
|
|
924
|
-
export {
|
|
740
|
+
export { resolveHeaderFooterResolutionBySection as $, type ApplyImagePropertiesInput as A, applyFragmentPaste as B, type CascadeDeletedNoteReferencesOptions as C, DEFAULT_MAX_EDITABLE_STORY_PARTS as D, applyHeaderFooterLifecycleOp as E, type FragmentPasteInput as F, applyNoteLifecycleOp as G, type HeaderFooterVariant as H, type InsertImageInput as I, cascadeDeletedNoteReferences as J, collectNoteReferences as K, collectPackageNoteReferences as L, MAX_FRAGMENT_DECODED_BYTES as M, type NoteDiagnostic as N, collectSectionPropertyNodes as O, type PackageTransactResult as P, createNoteReferenceScanBudget as Q, type ReplaceImageOptions as R, type StoryScope as S, TreePackageStore as T, diagnoseNoteReferences as U, isHeaderFooterLifecycleOp as V, isNoteLifecycleOp as W, normalNoteIds as X, notesPartHasId as Y, resolveHeaderFooterParts as Z, resolveHeaderFooterPartsBySection as _, type StoryTargetRejection as a, resolveNotesPart as a0, withBinaryPart as a1, withEmbeddedImage as a2, withoutUnreferencedImagePart as a3, type HeaderFooterParts as b, type HeaderFooterSectionResolution as c, type ImageIntentResult as d, type FragmentPasteResult as e, type DrawingPropertyIdResult as f, type HeaderFooterKind as g, type HeaderFooterLifecycleImpact as h, type HeaderFooterLifecycleOp as i, type HeaderFooterLifecycleRejection as j, type HeaderFooterLifecycleResult as k, type HeaderFooterSlotMeta as l, MAX_NOTE_REFERENCE_PARTS as m, MAX_NOTE_REFERENCE_SCAN as n, type NoteDiagnosticCode as o, type NoteLifecycleImpact as p, type NoteLifecycleOp as q, type NoteLifecycleOptions as r, type NoteLifecycleRejection as s, type NoteLifecycleResult as t, type NoteReferenceHit as u, type NoteReferenceScanBudget as v, type RemotePackageAttribution as w, type StoryResolveResult as x, type TreePackageStoreOptions as y, allocateDrawingPropertyId as z };
|