docxodus 8.0.0 → 9.1.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 (114) hide show
  1. package/README.md +156 -31
  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/embed.bundle.js +6569 -0
  16. package/dist/embed.d.ts +77 -0
  17. package/dist/embed.d.ts.map +1 -0
  18. package/dist/embed.iife.js +6596 -0
  19. package/dist/embed.js +350 -0
  20. package/dist/embed.js.map +1 -0
  21. package/dist/index.d.ts +11 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +17 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/page-number-format.d.ts +22 -0
  26. package/dist/page-number-format.d.ts.map +1 -0
  27. package/dist/page-number-format.js +60 -0
  28. package/dist/page-number-format.js.map +1 -0
  29. package/dist/pagination.bundle.js +158 -21
  30. package/dist/pagination.d.ts +38 -0
  31. package/dist/pagination.d.ts.map +1 -1
  32. package/dist/pagination.js +181 -29
  33. package/dist/pagination.js.map +1 -1
  34. package/dist/session.bundle.js +241 -4
  35. package/dist/session.d.ts +154 -6
  36. package/dist/session.d.ts.map +1 -1
  37. package/dist/session.js +193 -4
  38. package/dist/session.js.map +1 -1
  39. package/dist/types.d.ts +192 -4
  40. package/dist/types.d.ts.map +1 -1
  41. package/dist/types.js.map +1 -1
  42. package/dist/wasm/_framework/DocumentFormat.OpenXml.Framework.wasm +0 -0
  43. package/dist/wasm/_framework/DocumentFormat.OpenXml.Framework.wasm.br +0 -0
  44. package/dist/wasm/_framework/DocumentFormat.OpenXml.wasm +0 -0
  45. package/dist/wasm/_framework/DocumentFormat.OpenXml.wasm.br +0 -0
  46. package/dist/wasm/_framework/Docxodus.wasm +0 -0
  47. package/dist/wasm/_framework/Docxodus.wasm.br +0 -0
  48. package/dist/wasm/_framework/DocxodusWasm.wasm +0 -0
  49. package/dist/wasm/_framework/DocxodusWasm.wasm.br +0 -0
  50. package/dist/wasm/_framework/System.Collections.Concurrent.wasm +0 -0
  51. package/dist/wasm/_framework/System.Collections.Concurrent.wasm.br +0 -0
  52. package/dist/wasm/_framework/System.Collections.Immutable.wasm.br +0 -0
  53. package/dist/wasm/_framework/System.Collections.NonGeneric.wasm.br +0 -0
  54. package/dist/wasm/_framework/System.Collections.Specialized.wasm.br +0 -0
  55. package/dist/wasm/_framework/System.Collections.wasm +0 -0
  56. package/dist/wasm/_framework/System.Collections.wasm.br +0 -0
  57. package/dist/wasm/_framework/System.ComponentModel.Primitives.wasm.br +0 -0
  58. package/dist/wasm/_framework/System.ComponentModel.TypeConverter.wasm.br +0 -0
  59. package/dist/wasm/_framework/System.ComponentModel.wasm.br +0 -0
  60. package/dist/wasm/_framework/System.Console.wasm +0 -0
  61. package/dist/wasm/_framework/System.Console.wasm.br +0 -0
  62. package/dist/wasm/_framework/System.Diagnostics.Process.wasm +0 -0
  63. package/dist/wasm/_framework/System.Diagnostics.Process.wasm.br +0 -0
  64. package/dist/wasm/_framework/System.IO.Compression.wasm +0 -0
  65. package/dist/wasm/_framework/System.IO.Compression.wasm.br +0 -0
  66. package/dist/wasm/_framework/System.IO.Packaging.wasm +0 -0
  67. package/dist/wasm/_framework/System.IO.Packaging.wasm.br +0 -0
  68. package/dist/wasm/_framework/System.IO.Pipelines.wasm.br +0 -0
  69. package/dist/wasm/_framework/System.Linq.Expressions.wasm.br +0 -0
  70. package/dist/wasm/_framework/System.Linq.wasm +0 -0
  71. package/dist/wasm/_framework/System.Linq.wasm.br +0 -0
  72. package/dist/wasm/_framework/System.Memory.wasm +0 -0
  73. package/dist/wasm/_framework/System.Memory.wasm.br +0 -0
  74. package/dist/wasm/_framework/System.Net.Http.wasm.br +0 -0
  75. package/dist/wasm/_framework/System.Net.Primitives.wasm.br +0 -0
  76. package/dist/wasm/_framework/System.ObjectModel.wasm.br +0 -0
  77. package/dist/wasm/_framework/System.Private.CoreLib.wasm +0 -0
  78. package/dist/wasm/_framework/System.Private.CoreLib.wasm.br +0 -0
  79. package/dist/wasm/_framework/System.Private.Uri.wasm.br +0 -0
  80. package/dist/wasm/_framework/System.Private.Xml.Linq.wasm +0 -0
  81. package/dist/wasm/_framework/System.Private.Xml.Linq.wasm.br +0 -0
  82. package/dist/wasm/_framework/System.Private.Xml.wasm +0 -0
  83. package/dist/wasm/_framework/System.Private.Xml.wasm.br +0 -0
  84. package/dist/wasm/_framework/System.Runtime.InteropServices.JavaScript.wasm.br +0 -0
  85. package/dist/wasm/_framework/System.Runtime.wasm +0 -0
  86. package/dist/wasm/_framework/System.Runtime.wasm.br +0 -0
  87. package/dist/wasm/_framework/System.Security.Cryptography.wasm.br +0 -0
  88. package/dist/wasm/_framework/System.Text.Encodings.Web.wasm.br +0 -0
  89. package/dist/wasm/_framework/System.Text.Json.wasm +0 -0
  90. package/dist/wasm/_framework/System.Text.Json.wasm.br +0 -0
  91. package/dist/wasm/_framework/System.Text.RegularExpressions.wasm +0 -0
  92. package/dist/wasm/_framework/System.Text.RegularExpressions.wasm.br +0 -0
  93. package/dist/wasm/_framework/System.Xml.Linq.wasm.br +0 -0
  94. package/dist/wasm/_framework/System.Xml.XDocument.wasm +0 -0
  95. package/dist/wasm/_framework/System.Xml.XDocument.wasm.br +0 -0
  96. package/dist/wasm/_framework/System.wasm.br +0 -0
  97. package/dist/wasm/_framework/dotnet.boot.js +22 -57
  98. package/dist/wasm/_framework/dotnet.boot.js.br +0 -0
  99. package/dist/wasm/_framework/dotnet.js.br +0 -0
  100. package/dist/wasm/_framework/dotnet.native.js +0 -171
  101. package/dist/wasm/_framework/dotnet.native.js.br +0 -0
  102. package/dist/wasm/_framework/dotnet.native.wasm +0 -0
  103. package/dist/wasm/_framework/dotnet.native.wasm.br +0 -0
  104. package/dist/wasm/_framework/dotnet.runtime.js.br +0 -0
  105. package/package.json +26 -5
  106. package/dist/wasm/_framework/System.Text.Encoding.Extensions.wasm +0 -0
  107. package/dist/wasm/_framework/System.Threading.Thread.wasm +0 -0
  108. package/dist/wasm/_framework/System.Threading.wasm +0 -0
  109. package/dist/wasm/_framework/System.Xml.ReaderWriter.wasm +0 -0
  110. package/dist/wasm/_framework/System.Xml.XPath.XDocument.wasm +0 -0
  111. package/dist/wasm/_framework/System.Xml.XPath.wasm +0 -0
  112. package/dist/wasm/_framework/dotnet.js.map +0 -1
  113. package/dist/wasm/_framework/dotnet.native.js.symbols +0 -5532
  114. package/dist/wasm/_framework/dotnet.runtime.js.map +0 -1
@@ -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.
209
272
  */
210
- insertPageNumberField(anchorId, field = "currentPage") {
211
- return JSON.parse(this.wasm.InsertPageNumberField(this.handle, anchorId, field));
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.
282
+ */
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,138 @@ 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
+ /** Add a native Word comment around the exact live extent of a tracked revision returned by
360
+ * {@link listRevisions}. Accepting/rejecting the revision keeps the comment and either leaves
361
+ * its range on surviving text or collapses it to a point. */
362
+ addCommentToRevision(revisionId, author, markdown, opts) {
363
+ return JSON.parse(
364
+ this.wasm.AddCommentToRevision(
365
+ this.handle,
366
+ revisionId,
367
+ author,
368
+ opts?.initials ?? "",
369
+ opts?.date ?? "",
370
+ markdown
371
+ )
372
+ );
373
+ }
374
+ /**
375
+ * Add a native Word reply to `parentCommentAnchorId`. It adds an adjacent reference and
376
+ * inherits the thread root's range through `w15:paraIdParent`; the required
377
+ * `commentsExtended.xml` and `commentsIds.xml` parts are created when the parent was flat.
378
+ */
379
+ addCommentReply(parentCommentAnchorId, author, markdown, opts) {
380
+ return JSON.parse(
381
+ this.wasm.AddCommentReply(
382
+ this.handle,
383
+ parentCommentAnchorId,
384
+ author,
385
+ opts?.initials ?? "",
386
+ opts?.date ?? "",
387
+ markdown
388
+ )
389
+ );
390
+ }
391
+ /** Replace a comment's body text, addressed by its definition anchor (kind `cmt`); the
392
+ * comment's author/initials/date are preserved, as is the last paragraph's `w14:paraId`
393
+ * (Word's reply-threading key). */
394
+ updateComment(commentAnchorId, markdown) {
395
+ return JSON.parse(this.wasm.UpdateComment(this.handle, commentAnchorId, markdown));
396
+ }
397
+ /** Resolve or reopen one comment (`false` reopens it). Flat comments are upgraded with the
398
+ * paraId-keyed metadata Word uses, and the operation is undoable. */
399
+ setCommentResolved(commentAnchorId, resolved) {
400
+ return JSON.parse(
401
+ this.wasm.SetCommentResolved(this.handle, commentAnchorId, resolved)
402
+ );
403
+ }
404
+ /** Remove a comment: the definition, its body marker triple everywhere in the package, and
405
+ * any `commentsExtended`/`commentsIds` threading entries keyed by it. */
406
+ removeComment(commentAnchorId) {
407
+ return JSON.parse(this.wasm.RemoveComment(this.handle, commentAnchorId));
408
+ }
409
+ /** The document's native Word comments in comments-part order. */
410
+ listComments() {
411
+ return JSON.parse(this.wasm.ListComments(this.handle));
412
+ }
413
+ // ─── Tracked revisions (issue #318) ──────────────────────────────────
414
+ /** Markup-native tracked-revision listing, in document order across body, headers,
415
+ * footers, footnotes, and endnotes. Ids are stable while the underlying markup
416
+ * exists and address {@link acceptRevision}/{@link rejectRevision}; authors/dates
417
+ * are the markup's own (no accept/reject re-diff). */
418
+ listRevisions() {
419
+ return JSON.parse(this.wasm.ListRevisions(this.handle));
420
+ }
421
+ /** Accept ONE revision by the id {@link listRevisions} reported — insertions keep
422
+ * their content, deletions are carried out, a move materializes at its destination,
423
+ * a format change keeps the new properties. Undoable. */
424
+ acceptRevision(revisionId) {
425
+ return JSON.parse(this.wasm.AcceptRevision(this.handle, revisionId));
426
+ }
427
+ /** Reject ONE revision by id — the inverse of {@link acceptRevision}: insertions are
428
+ * removed, deleted content is restored, a move stays at its source, a format change
429
+ * restores the stored old properties. Undoable. */
430
+ rejectRevision(revisionId) {
431
+ return JSON.parse(this.wasm.RejectRevision(this.handle, revisionId));
432
+ }
228
433
  // ─── Tier C: formatting ──────────────────────────────────────────────
229
434
  applyFormat(anchorId, span, op) {
230
435
  const spanJson = span ? JSON.stringify(span) : "";
@@ -266,6 +471,27 @@ var DocxodusSession = (() => {
266
471
  applyListFormat(anchorId, kind) {
267
472
  return JSON.parse(this.wasm.ApplyListFormat(this.handle, anchorId, kind));
268
473
  }
474
+ /** Apply one list format across the contiguous sibling run from `firstAnchorId` to
475
+ * `lastAnchorId` inclusive (either document order). Every member shares one `w:num`
476
+ * instance so the numbering sequence stays intact; the whole range is a single undo step. */
477
+ applyListFormatRange(firstAnchorId, lastAnchorId, kind) {
478
+ return JSON.parse(
479
+ this.wasm.ApplyListFormatRange(this.handle, firstAnchorId, lastAnchorId, kind)
480
+ );
481
+ }
482
+ /** Restart the anchored list item's numbering at `value` — Word's *Set Numbering Value…*.
483
+ * Writes a `w:startOverride` on a dedicated `w:num` instance and repoints the anchored item
484
+ * plus every following member of its sequence, so a mid-list restart splits the sequence
485
+ * exactly like Word (earlier items keep their numbers, the tail continues from `value`). */
486
+ setListStartOverride(anchorId, value) {
487
+ return JSON.parse(this.wasm.SetListStartOverride(this.handle, anchorId, value));
488
+ }
489
+ /** Remove the numbering restart from the anchored item's whole sequence (the inverse of
490
+ * {@link setListStartOverride}); the sequence reverts to the definition's own start. A
491
+ * sequence with no override at the item's level is a successful no-op. */
492
+ clearListStartOverride(anchorId) {
493
+ return JSON.parse(this.wasm.ClearListStartOverride(this.handle, anchorId));
494
+ }
269
495
  // ─── Tier D: cell content ────────────────────────────────────────────
270
496
  replaceCellContent(cellAnchorId, markdown) {
271
497
  return JSON.parse(this.wasm.ReplaceCellContent(this.handle, cellAnchorId, markdown));
@@ -689,6 +915,17 @@ var DocxodusSession = (() => {
689
915
  );
690
916
  }
691
917
  // ─── Lifecycle ───────────────────────────────────────────────────────
918
+ /**
919
+ * Switch how subsequent mutations are recorded (issue #304). Session configuration,
920
+ * not a document mutation: not undoable, and already-applied markup is never touched.
921
+ */
922
+ setTrackedChanges(mode) {
923
+ this.wasm.SetTrackedChanges(this.handle, mode);
924
+ }
925
+ /** Author stamped on subsequent tracked-change markup; `null` restores the "docxodus" default. */
926
+ setRevisionAuthor(author) {
927
+ this.wasm.SetRevisionAuthor(this.handle, author ?? "");
928
+ }
692
929
  undo() {
693
930
  return this.wasm.Undo(this.handle);
694
931
  }
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,85 @@ 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
+ /** Add a native Word comment around the exact live extent of a tracked revision returned by
212
+ * {@link listRevisions}. Accepting/rejecting the revision keeps the comment and either leaves
213
+ * its range on surviving text or collapses it to a point. */
214
+ addCommentToRevision(revisionId: string, author: string, markdown: string, opts?: {
215
+ initials?: string;
216
+ date?: string;
217
+ }): EditResult;
218
+ /**
219
+ * Add a native Word reply to `parentCommentAnchorId`. It adds an adjacent reference and
220
+ * inherits the thread root's range through `w15:paraIdParent`; the required
221
+ * `commentsExtended.xml` and `commentsIds.xml` parts are created when the parent was flat.
222
+ */
223
+ addCommentReply(parentCommentAnchorId: string, author: string, markdown: string, opts?: {
224
+ initials?: string;
225
+ date?: string;
226
+ }): EditResult;
227
+ /** Replace a comment's body text, addressed by its definition anchor (kind `cmt`); the
228
+ * comment's author/initials/date are preserved, as is the last paragraph's `w14:paraId`
229
+ * (Word's reply-threading key). */
230
+ updateComment(commentAnchorId: string, markdown: string): EditResult;
231
+ /** Resolve or reopen one comment (`false` reopens it). Flat comments are upgraded with the
232
+ * paraId-keyed metadata Word uses, and the operation is undoable. */
233
+ setCommentResolved(commentAnchorId: string, resolved: boolean): EditResult;
234
+ /** Remove a comment: the definition, its body marker triple everywhere in the package, and
235
+ * any `commentsExtended`/`commentsIds` threading entries keyed by it. */
236
+ removeComment(commentAnchorId: string): EditResult;
237
+ /** The document's native Word comments in comments-part order. */
238
+ listComments(): CommentListEntry[];
239
+ /** Markup-native tracked-revision listing, in document order across body, headers,
240
+ * footers, footnotes, and endnotes. Ids are stable while the underlying markup
241
+ * exists and address {@link acceptRevision}/{@link rejectRevision}; authors/dates
242
+ * are the markup's own (no accept/reject re-diff). */
243
+ listRevisions(): RevisionListEntry[];
244
+ /** Accept ONE revision by the id {@link listRevisions} reported — insertions keep
245
+ * their content, deletions are carried out, a move materializes at its destination,
246
+ * a format change keeps the new properties. Undoable. */
247
+ acceptRevision(revisionId: string): EditResult;
248
+ /** Reject ONE revision by id — the inverse of {@link acceptRevision}: insertions are
249
+ * removed, deleted content is restored, a move stays at its source, a format change
250
+ * restores the stored old properties. Undoable. */
251
+ rejectRevision(revisionId: string): EditResult;
124
252
  applyFormat(anchorId: string, span: CharSpan | null, op: FormatOp): EditResult;
125
253
  /**
126
254
  * Convenience: find `substring` in the anchor's flat text and apply `op` to the
@@ -141,6 +269,19 @@ export declare class DocxSession {
141
269
  removeListMembership(anchorId: string): EditResult;
142
270
  /** Make the paragraph a bullet/numbered list item, or remove list membership ("none"). */
143
271
  applyListFormat(anchorId: string, kind: ListFormat): EditResult;
272
+ /** Apply one list format across the contiguous sibling run from `firstAnchorId` to
273
+ * `lastAnchorId` inclusive (either document order). Every member shares one `w:num`
274
+ * instance so the numbering sequence stays intact; the whole range is a single undo step. */
275
+ applyListFormatRange(firstAnchorId: string, lastAnchorId: string, kind: ListFormat): EditResult;
276
+ /** Restart the anchored list item's numbering at `value` — Word's *Set Numbering Value…*.
277
+ * Writes a `w:startOverride` on a dedicated `w:num` instance and repoints the anchored item
278
+ * plus every following member of its sequence, so a mid-list restart splits the sequence
279
+ * exactly like Word (earlier items keep their numbers, the tail continues from `value`). */
280
+ setListStartOverride(anchorId: string, value: number): EditResult;
281
+ /** Remove the numbering restart from the anchored item's whole sequence (the inverse of
282
+ * {@link setListStartOverride}); the sequence reverts to the definition's own start. A
283
+ * sequence with no override at the item's level is a successful no-op. */
284
+ clearListStartOverride(anchorId: string): EditResult;
144
285
  replaceCellContent(cellAnchorId: string, markdown: string): EditResult;
145
286
  readonly raw: {
146
287
  getXml: (anchorId: string) => string;
@@ -387,6 +528,13 @@ export declare class DocxSession {
387
528
  removeAnnotation(annotationId: string): EditResult;
388
529
  updateAnnotation(annotationId: string, update: AnnotationUpdate): EditResult;
389
530
  moveAnnotation(annotationId: string, newAnchorId: string, newSpan: CharSpan | null): EditResult;
531
+ /**
532
+ * Switch how subsequent mutations are recorded (issue #304). Session configuration,
533
+ * not a document mutation: not undoable, and already-applied markup is never touched.
534
+ */
535
+ setTrackedChanges(mode: TrackedChangeMode): void;
536
+ /** Author stamped on subsequent tracked-change markup; `null` restores the "docxodus" default. */
537
+ setRevisionAuthor(author: string | null): void;
390
538
  undo(): boolean;
391
539
  redo(): boolean;
392
540
  save(): Uint8Array;
@@ -399,6 +547,6 @@ export declare class DocxSession {
399
547
  * {@link DocxSession.close} (or it is disposed).
400
548
  */
401
549
  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";
550
+ 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
551
  export { ContextBoundary, PlaceholderKinds } from "./types.js";
404
552
  //# 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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"}