odf-kit 0.6.0 → 0.7.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.
@@ -17,8 +17,24 @@
17
17
  * - Text fields rendered as their stored evaluated value.
18
18
  * - Hidden text spans (text:display="none") suppressed from output.
19
19
  *
20
- * Text content is HTML-escaped. Attribute values used in href and src
21
- * are also HTML-escaped so the output is safe to embed in any context.
20
+ * Tier 3 additions:
21
+ * - Paragraph and heading layout: inline CSS for text-align, margins,
22
+ * padding, and line-height from ParagraphStyle via style="...".
23
+ * - Table column widths: <colgroup><col style="width:X"> emitted for
24
+ * tables where any cell carries a columnWidth value.
25
+ * - Image float positioning: style:wrap → CSS float:left / float:right /
26
+ * display:block via ImageNode.wrapMode.
27
+ * - Sections: <section data-name="..."> wrapping SectionNode.body.
28
+ * - Tracked changes (when HtmlOptions.trackedChanges is "changes"):
29
+ * insertion → <ins data-author="..." data-date="...">
30
+ * deletion → <del data-author="..." data-date="...">
31
+ * format-change → <span class="odf-format-change" data-author="..." data-date="...">
32
+ * In "final" and "original" modes TrackedChangeNode is not emitted by
33
+ * the parser; if encountered, it is rendered transparently.
34
+ *
35
+ * Text content is HTML-escaped. Attribute values used in href, src,
36
+ * data-*, and id are also HTML-escaped so the output is safe to embed
37
+ * in any context.
22
38
  *
23
39
  * By default renderHtml() returns a complete HTML document with a
24
40
  * <!DOCTYPE html> declaration. Pass { fragment: true } to receive only
@@ -1 +1 @@
1
- {"version":3,"file":"html-renderer.d.ts","sourceRoot":"","sources":["../../src/reader/html-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EACV,QAAQ,EAYR,WAAW,EACZ,MAAM,YAAY,CAAC;AAyRpB;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAI1E"}
1
+ {"version":3,"file":"html-renderer.d.ts","sourceRoot":"","sources":["../../src/reader/html-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EACV,QAAQ,EAeR,WAAW,EACZ,MAAM,YAAY,CAAC;AAoapB;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAI1E"}
@@ -17,8 +17,24 @@
17
17
  * - Text fields rendered as their stored evaluated value.
18
18
  * - Hidden text spans (text:display="none") suppressed from output.
19
19
  *
20
- * Text content is HTML-escaped. Attribute values used in href and src
21
- * are also HTML-escaped so the output is safe to embed in any context.
20
+ * Tier 3 additions:
21
+ * - Paragraph and heading layout: inline CSS for text-align, margins,
22
+ * padding, and line-height from ParagraphStyle via style="...".
23
+ * - Table column widths: <colgroup><col style="width:X"> emitted for
24
+ * tables where any cell carries a columnWidth value.
25
+ * - Image float positioning: style:wrap → CSS float:left / float:right /
26
+ * display:block via ImageNode.wrapMode.
27
+ * - Sections: <section data-name="..."> wrapping SectionNode.body.
28
+ * - Tracked changes (when HtmlOptions.trackedChanges is "changes"):
29
+ * insertion → <ins data-author="..." data-date="...">
30
+ * deletion → <del data-author="..." data-date="...">
31
+ * format-change → <span class="odf-format-change" data-author="..." data-date="...">
32
+ * In "final" and "original" modes TrackedChangeNode is not emitted by
33
+ * the parser; if encountered, it is rendered transparently.
34
+ *
35
+ * Text content is HTML-escaped. Attribute values used in href, src,
36
+ * data-*, and id are also HTML-escaped so the output is safe to embed
37
+ * in any context.
22
38
  *
23
39
  * By default renderHtml() returns a complete HTML document with a
24
40
  * <!DOCTYPE html> declaration. Pass { fragment: true } to receive only
@@ -72,10 +88,47 @@ function spanStyleToCss(style) {
72
88
  parts.push(`letter-spacing:${style.letterSpacing}`);
73
89
  return parts.join(";");
74
90
  }
91
+ // ============================================================
92
+ // Tier 3 — Paragraph CSS helper
93
+ // ============================================================
94
+ /**
95
+ * Convert a ParagraphStyle to a semicolon-separated inline CSS string.
96
+ *
97
+ * All ParagraphStyle values are CSS-ready strings including units.
98
+ * fo:text-align values ("start", "end", "left", "right", "center",
99
+ * "justify") are passed through verbatim — all are valid CSS text-align
100
+ * values in modern browsers.
101
+ *
102
+ * Returns an empty string when the style has no properties set,
103
+ * so callers can omit the style attribute entirely.
104
+ */
105
+ function paragraphStyleToCss(style) {
106
+ const parts = [];
107
+ if (style.textAlign !== undefined)
108
+ parts.push(`text-align:${style.textAlign}`);
109
+ if (style.marginLeft !== undefined)
110
+ parts.push(`margin-left:${style.marginLeft}`);
111
+ if (style.marginRight !== undefined)
112
+ parts.push(`margin-right:${style.marginRight}`);
113
+ if (style.marginTop !== undefined)
114
+ parts.push(`margin-top:${style.marginTop}`);
115
+ if (style.marginBottom !== undefined)
116
+ parts.push(`margin-bottom:${style.marginBottom}`);
117
+ if (style.paddingLeft !== undefined)
118
+ parts.push(`padding-left:${style.paddingLeft}`);
119
+ if (style.paddingRight !== undefined)
120
+ parts.push(`padding-right:${style.paddingRight}`);
121
+ if (style.lineHeight !== undefined)
122
+ parts.push(`line-height:${style.lineHeight}`);
123
+ return parts.join(";");
124
+ }
75
125
  /**
76
126
  * Convert a CellStyle to a semicolon-separated inline CSS string for
77
127
  * use on <td> elements. Border values are already in CSS-compatible
78
128
  * "width style color" format from the registry border expansion.
129
+ *
130
+ * columnWidth is not applied here — it is emitted on <col> elements
131
+ * via the colgroup builder in renderTable.
79
132
  */
80
133
  function cellStyleToCss(style) {
81
134
  const parts = [];
@@ -93,7 +146,6 @@ function cellStyleToCss(style) {
93
146
  if (style.border.right !== undefined)
94
147
  parts.push(`border-right:${style.border.right}`);
95
148
  }
96
- // columnWidth is stored for consumers but not applied to layout in Tier 2
97
149
  return parts.join(";");
98
150
  }
99
151
  /**
@@ -149,6 +201,14 @@ function renderTextSpan(span) {
149
201
  /**
150
202
  * Render an ImageNode as an HTML <img> element with a base64 data URI.
151
203
  *
204
+ * Tier 3 — Float positioning via wrapMode:
205
+ * "left" → float:left
206
+ * "right" → float:right
207
+ * "none" → display:block (image is a block; no float)
208
+ * "parallel" → no float (CSS does not support text on both sides)
209
+ * "run-through" → no float (CSS does not support image overlapping text)
210
+ * absent → no float CSS added
211
+ *
152
212
  * Accessibility: title → alt (always emitted, empty string when absent);
153
213
  * description → aria-describedby with a hidden <span> carrying the text.
154
214
  * The describedby id uses the image draw:name when available.
@@ -167,6 +227,17 @@ function renderImage(node) {
167
227
  styleParts.push(`width:${node.width}`);
168
228
  if (node.height !== undefined)
169
229
  styleParts.push(`height:${node.height}`);
230
+ // Tier 3: float positioning from wrapMode
231
+ if (node.wrapMode === "left") {
232
+ styleParts.push("float:left");
233
+ }
234
+ else if (node.wrapMode === "right") {
235
+ styleParts.push("float:right");
236
+ }
237
+ else if (node.wrapMode === "none") {
238
+ styleParts.push("display:block");
239
+ }
240
+ // "parallel" and "run-through" have no CSS equivalent; no float added.
170
241
  if (styleParts.length > 0)
171
242
  attrs.push(`style="${styleParts.join(";")}"`);
172
243
  if (node.description !== undefined && node.name !== undefined) {
@@ -187,11 +258,11 @@ function renderImage(node) {
187
258
  * bottom; JavaScript can do the same. The two elements are linked by
188
259
  * matching id/href pairs for back-referencing.
189
260
  */
190
- function renderNote(node) {
261
+ function renderNote(node, options) {
191
262
  const refId = `odf-note-${escapeHtml(node.id)}-ref`;
192
263
  const noteId = `odf-note-${escapeHtml(node.id)}`;
193
264
  const citation = `<sup id="${refId}"><a href="#${noteId}">${escapeHtml(node.citation)}</a></sup>`;
194
- const bodyHtml = node.body.map(renderBodyNode).join("");
265
+ const bodyHtml = node.body.map((n) => renderBodyNode(n, options)).join("");
195
266
  const aside = `<aside id="${noteId}" role="note">${bodyHtml}</aside>`;
196
267
  return citation + aside;
197
268
  }
@@ -223,13 +294,13 @@ function renderField(node) {
223
294
  * TextSpan has no `kind` property; all other InlineNode types do.
224
295
  * This distinguishes them without a separate type guard import.
225
296
  */
226
- function renderInlineNode(node) {
297
+ function renderInlineNode(node, options) {
227
298
  if ("kind" in node) {
228
299
  switch (node.kind) {
229
300
  case "image":
230
301
  return renderImage(node);
231
302
  case "note":
232
- return renderNote(node);
303
+ return renderNote(node, options);
233
304
  case "bookmark":
234
305
  return renderBookmark(node);
235
306
  case "field":
@@ -239,26 +310,47 @@ function renderInlineNode(node) {
239
310
  return renderTextSpan(node);
240
311
  }
241
312
  /** Render an array of InlineNode objects to a concatenated HTML string. */
242
- function renderSpans(spans) {
243
- return spans.map(renderInlineNode).join("");
313
+ function renderSpans(spans, options) {
314
+ return spans.map((n) => renderInlineNode(n, options)).join("");
244
315
  }
245
316
  // ============================================================
246
317
  // Block node renderers
247
318
  // ============================================================
248
319
  /** Render a ListNode to an HTML <ul> or <ol> string. */
249
- function renderList(list) {
320
+ function renderList(list, options) {
250
321
  const tag = list.ordered ? "ol" : "ul";
251
322
  const items = list.items
252
323
  .map((item) => {
253
- const content = renderSpans(item.spans);
254
- const nested = item.children !== undefined ? renderList(item.children) : "";
324
+ const content = renderSpans(item.spans, options);
325
+ const nested = item.children !== undefined ? renderList(item.children, options) : "";
255
326
  return `<li>${content}${nested}</li>`;
256
327
  })
257
328
  .join("");
258
329
  return `<${tag}>${items}</${tag}>`;
259
330
  }
260
- /** Render a TableNode to an HTML <table> string with Tier 2 inline styles. */
261
- function renderTable(table) {
331
+ /**
332
+ * Render a TableNode to an HTML <table> string with Tier 2 inline styles
333
+ * and Tier 3 column width layout via <colgroup>.
334
+ *
335
+ * Column widths are collected from the first content row's cells
336
+ * (where columnWidth values are stored after Tier 2 column style
337
+ * resolution). A <colgroup> is emitted only when at least one cell
338
+ * carries a columnWidth value.
339
+ */
340
+ function renderTable(table, options) {
341
+ // Build <colgroup> from the first row that has cells with columnWidth
342
+ let colgroup = "";
343
+ for (const row of table.rows) {
344
+ const cols = row.cells.map((cell) => {
345
+ const cw = cell.cellStyle?.columnWidth;
346
+ return cw ? `<col style="width:${cw}">` : "<col>";
347
+ });
348
+ // Only emit <colgroup> when at least one cell has an explicit width
349
+ if (row.cells.some((cell) => cell.cellStyle?.columnWidth !== undefined)) {
350
+ colgroup = `<colgroup>${cols.join("")}</colgroup>`;
351
+ }
352
+ break; // Use only the first row for column width information
353
+ }
262
354
  const rows = table.rows
263
355
  .map((row) => {
264
356
  const rowCss = row.rowStyle !== undefined ? rowStyleToCss(row.rowStyle) : "";
@@ -278,25 +370,91 @@ function renderTable(table) {
278
370
  attrParts.push(`style="${css}"`);
279
371
  }
280
372
  const attrs = attrParts.length > 0 ? " " + attrParts.join(" ") : "";
281
- return `<td${attrs}>${renderSpans(cell.spans)}</td>`;
373
+ return `<td${attrs}>${renderSpans(cell.spans, options)}</td>`;
282
374
  })
283
375
  .join("");
284
376
  return `<tr${rowAttrs}>${cells}</tr>`;
285
377
  })
286
378
  .join("");
287
- return `<table>${rows}</table>`;
379
+ return `<table>${colgroup}${rows}</table>`;
380
+ }
381
+ /**
382
+ * Render a SectionNode as a <section> element.
383
+ *
384
+ * The section name is emitted as a data-name attribute when present,
385
+ * preserving the author-assigned section name for consumers that perform
386
+ * semantic section identification.
387
+ */
388
+ function renderSection(node, options) {
389
+ const nameAttr = node.name ? ` data-name="${escapeHtml(node.name)}"` : "";
390
+ const bodyHtml = node.body.map((n) => renderBodyNode(n, options)).join("\n");
391
+ return `<section${nameAttr}>\n${bodyHtml}\n</section>`;
392
+ }
393
+ /**
394
+ * Render a TrackedChangeNode.
395
+ *
396
+ * When HtmlOptions.trackedChanges is "changes":
397
+ * insertion → <ins data-author="..." data-date="...">body</ins>
398
+ * deletion → <del data-author="..." data-date="...">body</del>
399
+ * format-change → <span class="odf-format-change" data-author="..." data-date="...">body</span>
400
+ *
401
+ * In other modes ("final", "original") the parser does not emit
402
+ * TrackedChangeNode values. If one is encountered anyway (e.g. consumer
403
+ * constructed the model manually), it is rendered transparently as its
404
+ * body content with no wrapper element.
405
+ */
406
+ function renderTrackedChange(node, options) {
407
+ const bodyHtml = node.body.map((n) => renderBodyNode(n, options)).join("\n");
408
+ if (options?.trackedChanges !== "changes") {
409
+ // Transparent fallback — render body content without annotation wrapper
410
+ return bodyHtml;
411
+ }
412
+ const dataParts = [];
413
+ if (node.author)
414
+ dataParts.push(`data-author="${escapeHtml(node.author)}"`);
415
+ if (node.date)
416
+ dataParts.push(`data-date="${escapeHtml(node.date)}"`);
417
+ const dataAttrs = dataParts.length > 0 ? " " + dataParts.join(" ") : "";
418
+ switch (node.changeType) {
419
+ case "insertion":
420
+ return `<ins${dataAttrs}>${bodyHtml}</ins>`;
421
+ case "deletion":
422
+ return `<del${dataAttrs}>${bodyHtml}</del>`;
423
+ case "format-change":
424
+ return `<span class="odf-format-change"${dataAttrs}>${bodyHtml}</span>`;
425
+ }
288
426
  }
289
427
  /** Render a single BodyNode to an HTML string. */
290
- function renderBodyNode(node) {
428
+ function renderBodyNode(node, options) {
291
429
  switch (node.kind) {
292
- case "paragraph":
293
- return `<p>${renderSpans(node.spans)}</p>`;
294
- case "heading":
295
- return `<h${node.level}>${renderSpans(node.spans)}</h${node.level}>`;
430
+ case "paragraph": {
431
+ const attrParts = [];
432
+ if (node.paragraphStyle !== undefined) {
433
+ const css = paragraphStyleToCss(node.paragraphStyle);
434
+ if (css)
435
+ attrParts.push(`style="${css}"`);
436
+ }
437
+ const attrs = attrParts.length > 0 ? " " + attrParts.join(" ") : "";
438
+ return `<p${attrs}>${renderSpans(node.spans, options)}</p>`;
439
+ }
440
+ case "heading": {
441
+ const attrParts = [];
442
+ if (node.paragraphStyle !== undefined) {
443
+ const css = paragraphStyleToCss(node.paragraphStyle);
444
+ if (css)
445
+ attrParts.push(`style="${css}"`);
446
+ }
447
+ const attrs = attrParts.length > 0 ? " " + attrParts.join(" ") : "";
448
+ return `<h${node.level}${attrs}>${renderSpans(node.spans, options)}</h${node.level}>`;
449
+ }
296
450
  case "list":
297
- return renderList(node);
451
+ return renderList(node, options);
298
452
  case "table":
299
- return renderTable(node);
453
+ return renderTable(node, options);
454
+ case "section":
455
+ return renderSection(node, options);
456
+ case "tracked-change":
457
+ return renderTrackedChange(node, options);
300
458
  }
301
459
  }
302
460
  // ============================================================
@@ -316,7 +474,7 @@ function renderBodyNode(node) {
316
474
  * ```
317
475
  */
318
476
  export function renderHtml(body, options) {
319
- const inner = body.map(renderBodyNode).join("\n");
477
+ const inner = body.map((n) => renderBodyNode(n, options)).join("\n");
320
478
  if (options?.fragment === true)
321
479
  return inner;
322
480
  return `<!DOCTYPE html>\n<html>\n<head><meta charset="utf-8"></head>\n<body>\n${inner}\n</body>\n</html>`;
@@ -1 +1 @@
1
- {"version":3,"file":"html-renderer.js","sourceRoot":"","sources":["../../src/reader/html-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html-renderer.js","sourceRoot":"","sources":["../../src/reader/html-renderer.ts"],"names":[],"mappings":"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"}
@@ -13,16 +13,19 @@
13
13
  * in a single step.
14
14
  */
15
15
  export { readOdt } from "./parser.js";
16
- export type { OdtDocumentModel, OdtMetadata, HtmlOptions, BodyNode, ParagraphNode, HeadingNode, ListNode, ListItemNode, TableNode, TableRowNode, TableCellNode, InlineNode, TextSpan, ImageNode, NoteNode, BookmarkNode, FieldNode, SpanStyle, ParagraphStyle, CellStyle, RowStyle, BorderStyle, } from "./types.js";
17
- import type { HtmlOptions } from "./types.js";
16
+ export type { OdtDocumentModel, OdtMetadata, HtmlOptions, ReadOdtOptions, BodyNode, ParagraphNode, HeadingNode, ListNode, ListItemNode, TableNode, TableRowNode, TableCellNode, SectionNode, TrackedChangeNode, InlineNode, TextSpan, ImageNode, NoteNode, BookmarkNode, FieldNode, SpanStyle, CellStyle, RowStyle, BorderStyle, ParagraphStyle, PageLayout, } from "./types.js";
17
+ import type { HtmlOptions, ReadOdtOptions } from "./types.js";
18
18
  /**
19
19
  * Convert an .odt file directly to an HTML string.
20
20
  *
21
21
  * Convenience wrapper around readOdt().toHtml(). Use readOdt() directly
22
- * when you need access to the document model or metadata.
22
+ * when you need access to the document model, metadata, page layout, or
23
+ * header/footer content.
23
24
  *
24
25
  * @param bytes - The raw .odt file as a Uint8Array.
25
26
  * @param options - HTML output options.
27
+ * @param readOptions - Options controlling how the document is parsed
28
+ * (e.g. tracked-changes mode). Passed to readOdt().
26
29
  * @returns HTML string. Full document by default; inner fragment when
27
30
  * options.fragment is true.
28
31
  *
@@ -35,5 +38,5 @@ import type { HtmlOptions } from "./types.js";
35
38
  * const html = odtToHtml(bytes, { fragment: true });
36
39
  * ```
37
40
  */
38
- export declare function odtToHtml(bytes: Uint8Array, options?: HtmlOptions): string;
41
+ export declare function odtToHtml(bytes: Uint8Array, options?: HtmlOptions, readOptions?: ReadOdtOptions): string;
39
42
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reader/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,YAAY,EAEV,gBAAgB,EAChB,WAAW,EACX,WAAW,EAGX,QAAQ,EACR,aAAa,EACb,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,aAAa,EAGb,UAAU,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,SAAS,EAGT,SAAS,EACT,cAAc,EACd,SAAS,EACT,QAAQ,EACR,WAAW,GACZ,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAE1E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reader/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,YAAY,EAEV,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EAGd,QAAQ,EACR,aAAa,EACb,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,aAAa,EAGb,WAAW,EACX,iBAAiB,EAGjB,UAAU,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,SAAS,EAGT,SAAS,EACT,SAAS,EACT,QAAQ,EACR,WAAW,EAGX,cAAc,EACd,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE,WAAW,EACrB,WAAW,CAAC,EAAE,cAAc,GAC3B,MAAM,CAER"}
@@ -18,10 +18,13 @@ import { readOdt } from "./parser.js";
18
18
  * Convert an .odt file directly to an HTML string.
19
19
  *
20
20
  * Convenience wrapper around readOdt().toHtml(). Use readOdt() directly
21
- * when you need access to the document model or metadata.
21
+ * when you need access to the document model, metadata, page layout, or
22
+ * header/footer content.
22
23
  *
23
24
  * @param bytes - The raw .odt file as a Uint8Array.
24
25
  * @param options - HTML output options.
26
+ * @param readOptions - Options controlling how the document is parsed
27
+ * (e.g. tracked-changes mode). Passed to readOdt().
25
28
  * @returns HTML string. Full document by default; inner fragment when
26
29
  * options.fragment is true.
27
30
  *
@@ -34,7 +37,7 @@ import { readOdt } from "./parser.js";
34
37
  * const html = odtToHtml(bytes, { fragment: true });
35
38
  * ```
36
39
  */
37
- export function odtToHtml(bytes, options) {
38
- return readOdt(bytes).toHtml(options);
40
+ export function odtToHtml(bytes, options, readOptions) {
41
+ return readOdt(bytes, readOptions).toHtml(options);
39
42
  }
40
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reader/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAiCtC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,SAAS,CAAC,KAAiB,EAAE,OAAqB;IAChE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reader/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAyCtC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,SAAS,CACvB,KAAiB,EACjB,OAAqB,EACrB,WAA4B;IAE5B,OAAO,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrD,CAAC"}
@@ -10,15 +10,28 @@
10
10
  * 2. Parse manifest.xml → build MIME type map for images
11
11
  * 3. Parse styles.xml and content.xml with parseXml
12
12
  * 4. Build style maps (semantic: bold/italic) and registry (visual: color/font)
13
- * 5. Extract tracked-change deletion IDs from office:text
13
+ * 5. Extract tracked-change changed-region metadata from office:text
14
14
  * 6. Walk office:body/office:text to produce BodyNode[]
15
- * 7. Parse meta.xml for document metadata
16
- * 8. Return OdtDocumentModel with body, metadata, and toHtml()
15
+ * 7. Parse page layout and master-page header/footer content from styles.xml
16
+ * 8. Parse meta.xml for document metadata
17
+ * 9. Return OdtDocumentModel with body, metadata, page layout, headers/footers,
18
+ * and toHtml()
19
+ *
20
+ * Tier 3 additions:
21
+ * - ParagraphStyle: text-align, margins, padding, line-height on paragraphs and headings
22
+ * - ImageNode.wrapMode: style:wrap resolved from graphic style via registry
23
+ * - PageLayout: page dimensions and margins from style:page-layout in styles.xml
24
+ * - Header/footer content: parsed from style:master-page in styles.xml
25
+ * - SectionNode: text:section surfaces as a named block node (was transparent)
26
+ * - Tracked changes (all three modes):
27
+ * "final" — accept all: insertions kept, deletions suppressed (unchanged behavior)
28
+ * "original" — reject all: insertions suppressed, deletions restored
29
+ * "changes" — full model: TrackedChangeNode emitted for block-level change markers
17
30
  *
18
31
  * Exported for unit testing: parseMetaXml is tested in isolation.
19
32
  * Internal helpers are tested indirectly through readOdt round-trip tests.
20
33
  */
21
- import type { OdtDocumentModel, OdtMetadata } from "./types.js";
34
+ import type { OdtDocumentModel, OdtMetadata, ReadOdtOptions } from "./types.js";
22
35
  /**
23
36
  * Parse a meta.xml string and return the document metadata.
24
37
  *
@@ -33,12 +46,15 @@ export declare function parseMetaXml(metaXml: string): OdtMetadata;
33
46
  * Parse an .odt file and return a structured document model.
34
47
  *
35
48
  * Reads content.xml for the document body and automatic styles,
36
- * styles.xml for named styles and font faces, meta.xml for document
37
- * metadata, and META-INF/manifest.xml for image MIME types. Extracts
38
- * all Pictures/* entries for embedded image resolution.
49
+ * styles.xml for named styles, font faces, page layout, and master page
50
+ * header/footer content, meta.xml for document metadata, and
51
+ * META-INF/manifest.xml for image MIME types. Extracts all Pictures/*
52
+ * entries for embedded image resolution.
39
53
  *
40
- * @param bytes - The raw .odt file as a Uint8Array.
41
- * @returns A populated OdtDocumentModel with body, metadata, and toHtml().
54
+ * @param bytes - The raw .odt file as a Uint8Array.
55
+ * @param options - Optional read options. See ReadOdtOptions.
56
+ * @returns A populated OdtDocumentModel with body, metadata, page layout,
57
+ * headers/footers, and toHtml().
42
58
  * @throws Error if the input is not a valid ZIP or is missing content.xml.
43
59
  *
44
60
  * @example
@@ -49,7 +65,11 @@ export declare function parseMetaXml(metaXml: string): OdtMetadata;
49
65
  * const bytes = new Uint8Array(readFileSync("document.odt"));
50
66
  * const doc = readOdt(bytes);
51
67
  * console.log(doc.body.length, "body nodes");
68
+ * console.log(doc.pageLayout?.orientation);
69
+ *
70
+ * // Review mode
71
+ * const review = readOdt(bytes, { trackedChanges: "changes" });
52
72
  * ```
53
73
  */
54
- export declare function readOdt(bytes: Uint8Array): OdtDocumentModel;
74
+ export declare function readOdt(bytes: Uint8Array, options?: ReadOdtOptions): OdtDocumentModel;
55
75
  //# sourceMappingURL=parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/reader/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAQH,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EAmBZ,MAAM,YAAY,CAAC;AA63BpB;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAuBzD;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB,CA0D3D"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/reader/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAQH,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EAuBX,cAAc,EACf,MAAM,YAAY,CAAC;AA+7CpB;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAuBzD;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,gBAAgB,CA8ErF"}