docxodus 8.0.0 → 9.0.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.
Files changed (46) hide show
  1. package/README.md +65 -24
  2. package/dist/editor-headerfooter.d.ts +39 -3
  3. package/dist/editor-headerfooter.d.ts.map +1 -1
  4. package/dist/editor-headerfooter.js +118 -2
  5. package/dist/editor-headerfooter.js.map +1 -1
  6. package/dist/editor-reconcile.d.ts +75 -0
  7. package/dist/editor-reconcile.d.ts.map +1 -0
  8. package/dist/editor-reconcile.js +125 -0
  9. package/dist/editor-reconcile.js.map +1 -0
  10. package/dist/editor.bundle.js +799 -42
  11. package/dist/editor.d.ts +121 -5
  12. package/dist/editor.d.ts.map +1 -1
  13. package/dist/editor.js +572 -31
  14. package/dist/editor.js.map +1 -1
  15. package/dist/index.d.ts +1 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/page-number-format.d.ts +22 -0
  19. package/dist/page-number-format.d.ts.map +1 -0
  20. package/dist/page-number-format.js +60 -0
  21. package/dist/page-number-format.js.map +1 -0
  22. package/dist/pagination.bundle.js +158 -21
  23. package/dist/pagination.d.ts +38 -0
  24. package/dist/pagination.d.ts.map +1 -1
  25. package/dist/pagination.js +181 -29
  26. package/dist/pagination.js.map +1 -1
  27. package/dist/session.bundle.js +226 -4
  28. package/dist/session.d.ts +147 -6
  29. package/dist/session.d.ts.map +1 -1
  30. package/dist/session.js +187 -4
  31. package/dist/session.js.map +1 -1
  32. package/dist/types.d.ts +191 -4
  33. package/dist/types.d.ts.map +1 -1
  34. package/dist/types.js.map +1 -1
  35. package/dist/wasm/_framework/Docxodus.wasm +0 -0
  36. package/dist/wasm/_framework/DocxodusWasm.wasm +0 -0
  37. package/dist/wasm/_framework/System.IO.Compression.wasm +0 -0
  38. package/dist/wasm/_framework/System.Linq.wasm +0 -0
  39. package/dist/wasm/_framework/System.Private.CoreLib.wasm +0 -0
  40. package/dist/wasm/_framework/System.Private.Xml.Linq.wasm +0 -0
  41. package/dist/wasm/_framework/System.Runtime.wasm +0 -0
  42. package/dist/wasm/_framework/System.Text.RegularExpressions.wasm +0 -0
  43. package/dist/wasm/_framework/dotnet.boot.js +10 -10
  44. package/dist/wasm/_framework/dotnet.native.js.symbols +2102 -2101
  45. package/dist/wasm/_framework/dotnet.native.wasm +0 -0
  46. package/package.json +17 -4
@@ -184,6 +184,47 @@ var DocxodusSession = (() => {
184
184
  deleteTableColumn(cellAnchorId) {
185
185
  return JSON.parse(this.wasm.DeleteTableColumn(this.handle, cellAnchorId));
186
186
  }
187
+ /**
188
+ * Table styling, addressed by a cell-paragraph anchor — the post-insert counterpart of
189
+ * {@link insertTable}'s options (issue #315 Stage A). `setColumnWidths` retunes `w:tblGrid` +
190
+ * every row's cell width (one positive twip value per column) and pins the table to fixed
191
+ * layout, exactly as inserting with explicit `columnWidths` would.
192
+ */
193
+ setColumnWidths(cellAnchorId, widthsTwips) {
194
+ return JSON.parse(
195
+ this.wasm.SetColumnWidths(this.handle, cellAnchorId, JSON.stringify(widthsTwips))
196
+ );
197
+ }
198
+ /**
199
+ * Set the table-level borders (`w:tblPr/w:tblBorders`) of the table containing the anchor.
200
+ * Only the edges named by `spec.scope` are written; the rest are left untouched. Style
201
+ * `"none"` removes the targeted edges. Omitting `spec` writes a thin single border all round.
202
+ */
203
+ setTableBorders(cellAnchorId, spec) {
204
+ return JSON.parse(
205
+ this.wasm.SetTableBorders(this.handle, cellAnchorId, spec ? JSON.stringify(spec) : "")
206
+ );
207
+ }
208
+ /**
209
+ * Shade the cell containing the anchor — or, with scope `"row"`, every cell of its row
210
+ * (header-row banding). `fill` is a hex RRGGBB triplet (leading '#' tolerated) or `"auto"`;
211
+ * `null` removes the shading.
212
+ */
213
+ setCellShading(cellAnchorId, fill, scope = "cell") {
214
+ return JSON.parse(
215
+ this.wasm.SetCellShading(this.handle, cellAnchorId, fill ?? "", scope)
216
+ );
217
+ }
218
+ /**
219
+ * Mark (or unmark) the row containing the anchor as a repeating header row
220
+ * (`w:trPr/w:tblHeader`), so a multi-page table re-shows it on every page. Word only honors
221
+ * the flag on a run of rows starting at the table's first row.
222
+ */
223
+ setRepeatHeaderRow(cellAnchorId, repeat) {
224
+ return JSON.parse(
225
+ this.wasm.SetRepeatHeaderRow(this.handle, cellAnchorId, repeat)
226
+ );
227
+ }
187
228
  // ─── Headers / footers / page numbers ────────────────────────────────
188
229
  /**
189
230
  * Set the running header story for the section that owns `anchorId` (any body block in that
@@ -204,11 +245,43 @@ var DocxodusSession = (() => {
204
245
  /**
205
246
  * Append a page-number field to the paragraph `anchorId` — typically a header/footer paragraph
206
247
  * returned by {@link setFooterText}/{@link setHeaderText}. `"currentPage"` emits a PAGE field,
207
- * `"totalPages"` a NUMPAGES field (native complex field with a cached "1"). Center it by setting
208
- * the paragraph alignment ({@link setParagraphFormat}). Returns the paragraph anchor in `modified`.
248
+ * `"totalPages"` a NUMPAGES field (native complex field with a cached result). Center it by
249
+ * setting the paragraph alignment ({@link setParagraphFormat}). Returns the paragraph anchor in
250
+ * `modified`.
251
+ *
252
+ * `format` writes the field's own `\*` general-formatting switch (`PAGE \* roman` → `i, ii, iii`).
253
+ * Omitting it — the default — emits a plain field, which is what Word inserts and what follows the
254
+ * SECTION's format ({@link setPageNumbering}). Prefer the section setting for ordinary page
255
+ * numbering: a switch here overrides it for this one field and keeps overriding it if the section
256
+ * later changes.
257
+ */
258
+ insertPageNumberField(anchorId, field = "currentPage", format) {
259
+ return JSON.parse(
260
+ this.wasm.InsertPageNumberField(this.handle, anchorId, field, format ?? "")
261
+ );
262
+ }
263
+ /**
264
+ * Set the page-numbering properties (`w:pgNumType`) of the section that owns `anchorId` (any body
265
+ * block in that section) — Word's *Format Page Numbers…* dialog: which number the section starts
266
+ * at and which format its pages use. Omitted fields on `op` are left unchanged, so the start can
267
+ * be set without disturbing the format and vice versa. Creates the element, and a trailing
268
+ * `w:sectPr`, if absent.
269
+ *
270
+ * Applying values the section already has is a successful no-op that does NOT consume undo
271
+ * history — safe to call from a dropdown's change handler.
272
+ */
273
+ setPageNumbering(anchorId, op) {
274
+ return JSON.parse(
275
+ this.wasm.SetPageNumbering(this.handle, anchorId, JSON.stringify(op))
276
+ );
277
+ }
278
+ /**
279
+ * Remove the section's page-numbering start/format: it reverts to continuing the previous
280
+ * section's numbering in Word's default `1, 2, 3`. Chapter-numbering attributes
281
+ * (`w:chapStyle`/`w:chapSep`) are preserved. A section with nothing to clear is a no-op.
209
282
  */
210
- insertPageNumberField(anchorId, field = "currentPage") {
211
- return JSON.parse(this.wasm.InsertPageNumberField(this.handle, anchorId, field));
283
+ clearPageNumbering(anchorId) {
284
+ return JSON.parse(this.wasm.ClearPageNumbering(this.handle, anchorId));
212
285
  }
213
286
  /**
214
287
  * Make the `kind` header/footer stories of the section that owns `anchorId` actually RENDER:
@@ -225,6 +298,123 @@ var DocxodusSession = (() => {
225
298
  ensureHeaderFooterVisible(anchorId, kind) {
226
299
  return JSON.parse(this.wasm.EnsureHeaderFooterVisible(this.handle, anchorId, kind));
227
300
  }
301
+ // ─── Footnotes / endnotes ────────────────────────────────────────────
302
+ /**
303
+ * Create a footnote whose body is `markdown` and cite it from the body paragraph `anchorId`, at
304
+ * `characterOffset` characters into that paragraph's text (0 = before all text, text length =
305
+ * after all of it). On a document with no footnotes yet this also creates the footnotes part,
306
+ * Word's two reserved separator notes, the `FootnoteText`/`FootnoteReference` styles and the
307
+ * `w:footnotePr` settings declaration; otherwise the existing part is reused. The note id is
308
+ * allocated above every id already used in the package, so non-contiguous ids can't collide.
309
+ *
310
+ * Returns the created note anchors in `EditResult.created` — the definition (kind `fn`) and its
311
+ * paragraphs (kind `p`, scope `fn`) — so the note can immediately be edited with
312
+ * {@link replaceText} or removed with {@link deleteBlock} (which also drops the body reference).
313
+ *
314
+ * Body paragraphs only: Word does not allow a note reference inside a header/footer story or
315
+ * inside another note, so a non-body anchor fails with `anchorWrongKind`.
316
+ */
317
+ insertFootnote(anchorId, characterOffset, markdown) {
318
+ return JSON.parse(
319
+ this.wasm.InsertFootnote(this.handle, anchorId, characterOffset, markdown)
320
+ );
321
+ }
322
+ /** Create an endnote — see {@link insertFootnote}; writes the endnotes part and a
323
+ * `w:endnoteReference`, and the created definition anchor has kind `en`. */
324
+ insertEndnote(anchorId, characterOffset, markdown) {
325
+ return JSON.parse(
326
+ this.wasm.InsertEndnote(this.handle, anchorId, characterOffset, markdown)
327
+ );
328
+ }
329
+ // ─── Comments (issue #300) ───────────────────────────────────────────
330
+ /**
331
+ * Add a **native Word comment** (real `w:comment` markup, visible in Word/Google
332
+ * Docs/LibreOffice's Reviewing pane — not the {@link addAnnotation} overlay) on the body
333
+ * paragraph `anchorId`. `span` selects the commented character range; `null` comments the
334
+ * whole block. On a document with no comments yet this also creates the comments part and
335
+ * the `CommentText`/`CommentReference` styles. `opts.date` (ISO-8601) is written only when
336
+ * provided, keeping output deterministic by default.
337
+ *
338
+ * Returns the created definition anchor (kind `cmt`) and its paragraph anchors (kind `p`,
339
+ * scope `cmt`) in `EditResult.created`, so the comment can immediately be edited with
340
+ * {@link updateComment} or removed with {@link removeComment}.
341
+ *
342
+ * Body paragraphs only (Word has no comments-on-comments); a non-body anchor fails with
343
+ * `anchor_wrong_kind`, a zero-length span with `empty_comment_span`.
344
+ */
345
+ addComment(anchorId, span, author, markdown, opts) {
346
+ const spanJson = span ? JSON.stringify(span) : "";
347
+ return JSON.parse(
348
+ this.wasm.AddComment(
349
+ this.handle,
350
+ anchorId,
351
+ spanJson,
352
+ author,
353
+ opts?.initials ?? "",
354
+ opts?.date ?? "",
355
+ markdown
356
+ )
357
+ );
358
+ }
359
+ /**
360
+ * Add a native Word reply to `parentCommentAnchorId`. It adds an adjacent reference and
361
+ * inherits the thread root's range through `w15:paraIdParent`; the required
362
+ * `commentsExtended.xml` and `commentsIds.xml` parts are created when the parent was flat.
363
+ */
364
+ addCommentReply(parentCommentAnchorId, author, markdown, opts) {
365
+ return JSON.parse(
366
+ this.wasm.AddCommentReply(
367
+ this.handle,
368
+ parentCommentAnchorId,
369
+ author,
370
+ opts?.initials ?? "",
371
+ opts?.date ?? "",
372
+ markdown
373
+ )
374
+ );
375
+ }
376
+ /** Replace a comment's body text, addressed by its definition anchor (kind `cmt`); the
377
+ * comment's author/initials/date are preserved, as is the last paragraph's `w14:paraId`
378
+ * (Word's reply-threading key). */
379
+ updateComment(commentAnchorId, markdown) {
380
+ return JSON.parse(this.wasm.UpdateComment(this.handle, commentAnchorId, markdown));
381
+ }
382
+ /** Resolve or reopen one comment (`false` reopens it). Flat comments are upgraded with the
383
+ * paraId-keyed metadata Word uses, and the operation is undoable. */
384
+ setCommentResolved(commentAnchorId, resolved) {
385
+ return JSON.parse(
386
+ this.wasm.SetCommentResolved(this.handle, commentAnchorId, resolved)
387
+ );
388
+ }
389
+ /** Remove a comment: the definition, its body marker triple everywhere in the package, and
390
+ * any `commentsExtended`/`commentsIds` threading entries keyed by it. */
391
+ removeComment(commentAnchorId) {
392
+ return JSON.parse(this.wasm.RemoveComment(this.handle, commentAnchorId));
393
+ }
394
+ /** The document's native Word comments in comments-part order. */
395
+ listComments() {
396
+ return JSON.parse(this.wasm.ListComments(this.handle));
397
+ }
398
+ // ─── Tracked revisions (issue #318) ──────────────────────────────────
399
+ /** Markup-native tracked-revision listing, in document order across body, headers,
400
+ * footers, footnotes, and endnotes. Ids are stable while the underlying markup
401
+ * exists and address {@link acceptRevision}/{@link rejectRevision}; authors/dates
402
+ * are the markup's own (no accept/reject re-diff). */
403
+ listRevisions() {
404
+ return JSON.parse(this.wasm.ListRevisions(this.handle));
405
+ }
406
+ /** Accept ONE revision by the id {@link listRevisions} reported — insertions keep
407
+ * their content, deletions are carried out, a move materializes at its destination,
408
+ * a format change keeps the new properties. Undoable. */
409
+ acceptRevision(revisionId) {
410
+ return JSON.parse(this.wasm.AcceptRevision(this.handle, revisionId));
411
+ }
412
+ /** Reject ONE revision by id — the inverse of {@link acceptRevision}: insertions are
413
+ * removed, deleted content is restored, a move stays at its source, a format change
414
+ * restores the stored old properties. Undoable. */
415
+ rejectRevision(revisionId) {
416
+ return JSON.parse(this.wasm.RejectRevision(this.handle, revisionId));
417
+ }
228
418
  // ─── Tier C: formatting ──────────────────────────────────────────────
229
419
  applyFormat(anchorId, span, op) {
230
420
  const spanJson = span ? JSON.stringify(span) : "";
@@ -266,6 +456,27 @@ var DocxodusSession = (() => {
266
456
  applyListFormat(anchorId, kind) {
267
457
  return JSON.parse(this.wasm.ApplyListFormat(this.handle, anchorId, kind));
268
458
  }
459
+ /** Apply one list format across the contiguous sibling run from `firstAnchorId` to
460
+ * `lastAnchorId` inclusive (either document order). Every member shares one `w:num`
461
+ * instance so the numbering sequence stays intact; the whole range is a single undo step. */
462
+ applyListFormatRange(firstAnchorId, lastAnchorId, kind) {
463
+ return JSON.parse(
464
+ this.wasm.ApplyListFormatRange(this.handle, firstAnchorId, lastAnchorId, kind)
465
+ );
466
+ }
467
+ /** Restart the anchored list item's numbering at `value` — Word's *Set Numbering Value…*.
468
+ * Writes a `w:startOverride` on a dedicated `w:num` instance and repoints the anchored item
469
+ * plus every following member of its sequence, so a mid-list restart splits the sequence
470
+ * exactly like Word (earlier items keep their numbers, the tail continues from `value`). */
471
+ setListStartOverride(anchorId, value) {
472
+ return JSON.parse(this.wasm.SetListStartOverride(this.handle, anchorId, value));
473
+ }
474
+ /** Remove the numbering restart from the anchored item's whole sequence (the inverse of
475
+ * {@link setListStartOverride}); the sequence reverts to the definition's own start. A
476
+ * sequence with no override at the item's level is a successful no-op. */
477
+ clearListStartOverride(anchorId) {
478
+ return JSON.parse(this.wasm.ClearListStartOverride(this.handle, anchorId));
479
+ }
269
480
  // ─── Tier D: cell content ────────────────────────────────────────────
270
481
  replaceCellContent(cellAnchorId, markdown) {
271
482
  return JSON.parse(this.wasm.ReplaceCellContent(this.handle, cellAnchorId, markdown));
@@ -689,6 +900,17 @@ var DocxodusSession = (() => {
689
900
  );
690
901
  }
691
902
  // ─── Lifecycle ───────────────────────────────────────────────────────
903
+ /**
904
+ * Switch how subsequent mutations are recorded (issue #304). Session configuration,
905
+ * not a document mutation: not undoable, and already-applied markup is never touched.
906
+ */
907
+ setTrackedChanges(mode) {
908
+ this.wasm.SetTrackedChanges(this.handle, mode);
909
+ }
910
+ /** Author stamped on subsequent tracked-change markup; `null` restores the "docxodus" default. */
911
+ setRevisionAuthor(author) {
912
+ this.wasm.SetRevisionAuthor(this.handle, author ?? "");
913
+ }
692
914
  undo() {
693
915
  return this.wasm.Undo(this.handle);
694
916
  }
package/dist/session.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { AnchorInfo, AnchorTargetRef, AnnotationUpdate, BlockMetadata, BulkEditResult, CharSpan, CrossBlockMatch, DiffEntry, DocumentAnnotation, DocxodusWasmExports, DocxSessionProjection, DocxSessionSettings, EditResult, EditSummary, FillOptions, FindOptions, FormatOp, HeaderFooterKind, PageNumberField, ParagraphBorderEdge, ParagraphFormatOp, TableInsertOptions, ListFormat, GrepOptions, ListMembership, ReplaceOptions, SectionInfo, TemplatePlaceholder, TextMatch } from "./types.js";
2
- import { DiffFormat, ProjectionDepth } from "./types.js";
1
+ import type { AnchorInfo, AnchorTargetRef, AnnotationUpdate, BlockMetadata, BulkEditResult, CharSpan, CommentListEntry, CrossBlockMatch, DiffEntry, DocumentAnnotation, DocxodusWasmExports, DocxSessionProjection, DocxSessionSettings, EditResult, EditSummary, FillOptions, FindOptions, FormatOp, HeaderFooterKind, NumberFormat, PageNumberField, PageNumberingOp, ParagraphBorderEdge, ParagraphFormatOp, TableBorderSpec, TableInsertOptions, TableShadingScope, ListFormat, GrepOptions, ListMembership, ReplaceOptions, RevisionListEntry, SectionInfo, TemplatePlaceholder, TextMatch } from "./types.js";
2
+ import { DiffFormat, ProjectionDepth, TrackedChangeMode } from "./types.js";
3
3
  /**
4
4
  * Stateful in-memory DOCX editing session keyed by markdown-projection anchor ids.
5
5
  * Mirror of the .NET `DocxSession` surface. See
@@ -89,6 +89,31 @@ export declare class DocxSession {
89
89
  insertTableColumn(cellAnchorId: string, position: "before" | "after"): EditResult;
90
90
  deleteTableRow(cellAnchorId: string): EditResult;
91
91
  deleteTableColumn(cellAnchorId: string): EditResult;
92
+ /**
93
+ * Table styling, addressed by a cell-paragraph anchor — the post-insert counterpart of
94
+ * {@link insertTable}'s options (issue #315 Stage A). `setColumnWidths` retunes `w:tblGrid` +
95
+ * every row's cell width (one positive twip value per column) and pins the table to fixed
96
+ * layout, exactly as inserting with explicit `columnWidths` would.
97
+ */
98
+ setColumnWidths(cellAnchorId: string, widthsTwips: number[]): EditResult;
99
+ /**
100
+ * Set the table-level borders (`w:tblPr/w:tblBorders`) of the table containing the anchor.
101
+ * Only the edges named by `spec.scope` are written; the rest are left untouched. Style
102
+ * `"none"` removes the targeted edges. Omitting `spec` writes a thin single border all round.
103
+ */
104
+ setTableBorders(cellAnchorId: string, spec?: TableBorderSpec): EditResult;
105
+ /**
106
+ * Shade the cell containing the anchor — or, with scope `"row"`, every cell of its row
107
+ * (header-row banding). `fill` is a hex RRGGBB triplet (leading '#' tolerated) or `"auto"`;
108
+ * `null` removes the shading.
109
+ */
110
+ setCellShading(cellAnchorId: string, fill: string | null, scope?: TableShadingScope): EditResult;
111
+ /**
112
+ * Mark (or unmark) the row containing the anchor as a repeating header row
113
+ * (`w:trPr/w:tblHeader`), so a multi-page table re-shows it on every page. Word only honors
114
+ * the flag on a run of rows starting at the table's first row.
115
+ */
116
+ setRepeatHeaderRow(cellAnchorId: string, repeat: boolean): EditResult;
92
117
  /**
93
118
  * Set the running header story for the section that owns `anchorId` (any body block in that
94
119
  * section) to `markdown`. Creates the header part + `w:headerReference` if the story of `kind`
@@ -104,10 +129,34 @@ export declare class DocxSession {
104
129
  /**
105
130
  * Append a page-number field to the paragraph `anchorId` — typically a header/footer paragraph
106
131
  * returned by {@link setFooterText}/{@link setHeaderText}. `"currentPage"` emits a PAGE field,
107
- * `"totalPages"` a NUMPAGES field (native complex field with a cached "1"). Center it by setting
108
- * the paragraph alignment ({@link setParagraphFormat}). Returns the paragraph anchor in `modified`.
132
+ * `"totalPages"` a NUMPAGES field (native complex field with a cached result). Center it by
133
+ * setting the paragraph alignment ({@link setParagraphFormat}). Returns the paragraph anchor in
134
+ * `modified`.
135
+ *
136
+ * `format` writes the field's own `\*` general-formatting switch (`PAGE \* roman` → `i, ii, iii`).
137
+ * Omitting it — the default — emits a plain field, which is what Word inserts and what follows the
138
+ * SECTION's format ({@link setPageNumbering}). Prefer the section setting for ordinary page
139
+ * numbering: a switch here overrides it for this one field and keeps overriding it if the section
140
+ * later changes.
141
+ */
142
+ insertPageNumberField(anchorId: string, field?: PageNumberField, format?: NumberFormat): EditResult;
143
+ /**
144
+ * Set the page-numbering properties (`w:pgNumType`) of the section that owns `anchorId` (any body
145
+ * block in that section) — Word's *Format Page Numbers…* dialog: which number the section starts
146
+ * at and which format its pages use. Omitted fields on `op` are left unchanged, so the start can
147
+ * be set without disturbing the format and vice versa. Creates the element, and a trailing
148
+ * `w:sectPr`, if absent.
149
+ *
150
+ * Applying values the section already has is a successful no-op that does NOT consume undo
151
+ * history — safe to call from a dropdown's change handler.
109
152
  */
110
- insertPageNumberField(anchorId: string, field?: PageNumberField): EditResult;
153
+ setPageNumbering(anchorId: string, op: PageNumberingOp): EditResult;
154
+ /**
155
+ * Remove the section's page-numbering start/format: it reverts to continuing the previous
156
+ * section's numbering in Word's default `1, 2, 3`. Chapter-numbering attributes
157
+ * (`w:chapStyle`/`w:chapSep`) are preserved. A section with nothing to clear is a no-op.
158
+ */
159
+ clearPageNumbering(anchorId: string): EditResult;
111
160
  /**
112
161
  * Make the `kind` header/footer stories of the section that owns `anchorId` actually RENDER:
113
162
  * `"first"` sets `w:titlePg`, `"even"` sets the document-global `w:evenAndOddHeaders`;
@@ -121,6 +170,78 @@ export declare class DocxSession {
121
170
  * and governs footers too.
122
171
  */
123
172
  ensureHeaderFooterVisible(anchorId: string, kind: HeaderFooterKind): EditResult;
173
+ /**
174
+ * Create a footnote whose body is `markdown` and cite it from the body paragraph `anchorId`, at
175
+ * `characterOffset` characters into that paragraph's text (0 = before all text, text length =
176
+ * after all of it). On a document with no footnotes yet this also creates the footnotes part,
177
+ * Word's two reserved separator notes, the `FootnoteText`/`FootnoteReference` styles and the
178
+ * `w:footnotePr` settings declaration; otherwise the existing part is reused. The note id is
179
+ * allocated above every id already used in the package, so non-contiguous ids can't collide.
180
+ *
181
+ * Returns the created note anchors in `EditResult.created` — the definition (kind `fn`) and its
182
+ * paragraphs (kind `p`, scope `fn`) — so the note can immediately be edited with
183
+ * {@link replaceText} or removed with {@link deleteBlock} (which also drops the body reference).
184
+ *
185
+ * Body paragraphs only: Word does not allow a note reference inside a header/footer story or
186
+ * inside another note, so a non-body anchor fails with `anchorWrongKind`.
187
+ */
188
+ insertFootnote(anchorId: string, characterOffset: number, markdown: string): EditResult;
189
+ /** Create an endnote — see {@link insertFootnote}; writes the endnotes part and a
190
+ * `w:endnoteReference`, and the created definition anchor has kind `en`. */
191
+ insertEndnote(anchorId: string, characterOffset: number, markdown: string): EditResult;
192
+ /**
193
+ * Add a **native Word comment** (real `w:comment` markup, visible in Word/Google
194
+ * Docs/LibreOffice's Reviewing pane — not the {@link addAnnotation} overlay) on the body
195
+ * paragraph `anchorId`. `span` selects the commented character range; `null` comments the
196
+ * whole block. On a document with no comments yet this also creates the comments part and
197
+ * the `CommentText`/`CommentReference` styles. `opts.date` (ISO-8601) is written only when
198
+ * provided, keeping output deterministic by default.
199
+ *
200
+ * Returns the created definition anchor (kind `cmt`) and its paragraph anchors (kind `p`,
201
+ * scope `cmt`) in `EditResult.created`, so the comment can immediately be edited with
202
+ * {@link updateComment} or removed with {@link removeComment}.
203
+ *
204
+ * Body paragraphs only (Word has no comments-on-comments); a non-body anchor fails with
205
+ * `anchor_wrong_kind`, a zero-length span with `empty_comment_span`.
206
+ */
207
+ addComment(anchorId: string, span: CharSpan | null, author: string, markdown: string, opts?: {
208
+ initials?: string;
209
+ date?: string;
210
+ }): EditResult;
211
+ /**
212
+ * Add a native Word reply to `parentCommentAnchorId`. It adds an adjacent reference and
213
+ * inherits the thread root's range through `w15:paraIdParent`; the required
214
+ * `commentsExtended.xml` and `commentsIds.xml` parts are created when the parent was flat.
215
+ */
216
+ addCommentReply(parentCommentAnchorId: string, author: string, markdown: string, opts?: {
217
+ initials?: string;
218
+ date?: string;
219
+ }): EditResult;
220
+ /** Replace a comment's body text, addressed by its definition anchor (kind `cmt`); the
221
+ * comment's author/initials/date are preserved, as is the last paragraph's `w14:paraId`
222
+ * (Word's reply-threading key). */
223
+ updateComment(commentAnchorId: string, markdown: string): EditResult;
224
+ /** Resolve or reopen one comment (`false` reopens it). Flat comments are upgraded with the
225
+ * paraId-keyed metadata Word uses, and the operation is undoable. */
226
+ setCommentResolved(commentAnchorId: string, resolved: boolean): EditResult;
227
+ /** Remove a comment: the definition, its body marker triple everywhere in the package, and
228
+ * any `commentsExtended`/`commentsIds` threading entries keyed by it. */
229
+ removeComment(commentAnchorId: string): EditResult;
230
+ /** The document's native Word comments in comments-part order. */
231
+ listComments(): CommentListEntry[];
232
+ /** Markup-native tracked-revision listing, in document order across body, headers,
233
+ * footers, footnotes, and endnotes. Ids are stable while the underlying markup
234
+ * exists and address {@link acceptRevision}/{@link rejectRevision}; authors/dates
235
+ * are the markup's own (no accept/reject re-diff). */
236
+ listRevisions(): RevisionListEntry[];
237
+ /** Accept ONE revision by the id {@link listRevisions} reported — insertions keep
238
+ * their content, deletions are carried out, a move materializes at its destination,
239
+ * a format change keeps the new properties. Undoable. */
240
+ acceptRevision(revisionId: string): EditResult;
241
+ /** Reject ONE revision by id — the inverse of {@link acceptRevision}: insertions are
242
+ * removed, deleted content is restored, a move stays at its source, a format change
243
+ * restores the stored old properties. Undoable. */
244
+ rejectRevision(revisionId: string): EditResult;
124
245
  applyFormat(anchorId: string, span: CharSpan | null, op: FormatOp): EditResult;
125
246
  /**
126
247
  * Convenience: find `substring` in the anchor's flat text and apply `op` to the
@@ -141,6 +262,19 @@ export declare class DocxSession {
141
262
  removeListMembership(anchorId: string): EditResult;
142
263
  /** Make the paragraph a bullet/numbered list item, or remove list membership ("none"). */
143
264
  applyListFormat(anchorId: string, kind: ListFormat): EditResult;
265
+ /** Apply one list format across the contiguous sibling run from `firstAnchorId` to
266
+ * `lastAnchorId` inclusive (either document order). Every member shares one `w:num`
267
+ * instance so the numbering sequence stays intact; the whole range is a single undo step. */
268
+ applyListFormatRange(firstAnchorId: string, lastAnchorId: string, kind: ListFormat): EditResult;
269
+ /** Restart the anchored list item's numbering at `value` — Word's *Set Numbering Value…*.
270
+ * Writes a `w:startOverride` on a dedicated `w:num` instance and repoints the anchored item
271
+ * plus every following member of its sequence, so a mid-list restart splits the sequence
272
+ * exactly like Word (earlier items keep their numbers, the tail continues from `value`). */
273
+ setListStartOverride(anchorId: string, value: number): EditResult;
274
+ /** Remove the numbering restart from the anchored item's whole sequence (the inverse of
275
+ * {@link setListStartOverride}); the sequence reverts to the definition's own start. A
276
+ * sequence with no override at the item's level is a successful no-op. */
277
+ clearListStartOverride(anchorId: string): EditResult;
144
278
  replaceCellContent(cellAnchorId: string, markdown: string): EditResult;
145
279
  readonly raw: {
146
280
  getXml: (anchorId: string) => string;
@@ -387,6 +521,13 @@ export declare class DocxSession {
387
521
  removeAnnotation(annotationId: string): EditResult;
388
522
  updateAnnotation(annotationId: string, update: AnnotationUpdate): EditResult;
389
523
  moveAnnotation(annotationId: string, newAnchorId: string, newSpan: CharSpan | null): EditResult;
524
+ /**
525
+ * Switch how subsequent mutations are recorded (issue #304). Session configuration,
526
+ * not a document mutation: not undoable, and already-applied markup is never touched.
527
+ */
528
+ setTrackedChanges(mode: TrackedChangeMode): void;
529
+ /** Author stamped on subsequent tracked-change markup; `null` restores the "docxodus" default. */
530
+ setRevisionAuthor(author: string | null): void;
390
531
  undo(): boolean;
391
532
  redo(): boolean;
392
533
  save(): Uint8Array;
@@ -399,6 +540,6 @@ export declare class DocxSession {
399
540
  * {@link DocxSession.close} (or it is disposed).
400
541
  */
401
542
  export declare function openDocxSession(bytes: Uint8Array, wasmExports: DocxodusWasmExports, settings?: DocxSessionSettings): DocxSession;
402
- export type { AnchorInfo, AnchorRef, AnchorTargetRef, BlockSlice, CharSpan, CrossBlockMatch, DocumentAnnotation, DocxSessionProjection, DocxSessionSettings, EditError, EditErrorCode, EditResult, FindOptions, FormatOp, GrepOptions, MarkdownPatch, PlaceholderKind, ReplaceOptions, RunFormatting, RunFragment, TemplatePlaceholder, TextMatch } from "./types.js";
543
+ export type { AnchorInfo, AnchorRef, AnchorTargetRef, BlockSlice, CharSpan, CommentListEntry, CrossBlockMatch, DocumentAnnotation, DocxSessionProjection, DocxSessionSettings, EditError, EditErrorCode, EditResult, FindOptions, FormatOp, GrepOptions, MarkdownPatch, PlaceholderKind, ReplaceOptions, RunFormatting, RunFragment, TemplatePlaceholder, TextMatch } from "./types.js";
403
544
  export { ContextBoundary, PlaceholderKinds } from "./types.js";
404
545
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}