@usejunior/docx-core 0.9.1 → 0.10.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 (181) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/atomizer.d.ts +15 -1
  3. package/dist/atomizer.d.ts.map +1 -1
  4. package/dist/atomizer.js +37 -1
  5. package/dist/atomizer.js.map +1 -1
  6. package/dist/baselines/atomizer/documentReconstructor.d.ts.map +1 -1
  7. package/dist/baselines/atomizer/documentReconstructor.js +218 -90
  8. package/dist/baselines/atomizer/documentReconstructor.js.map +1 -1
  9. package/dist/baselines/atomizer/formattingFidelity.d.ts +99 -0
  10. package/dist/baselines/atomizer/formattingFidelity.d.ts.map +1 -0
  11. package/dist/baselines/atomizer/formattingFidelity.js +449 -0
  12. package/dist/baselines/atomizer/formattingFidelity.js.map +1 -0
  13. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.d.ts +37 -0
  14. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.d.ts.map +1 -0
  15. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.js +189 -0
  16. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.js.map +1 -0
  17. package/dist/baselines/atomizer/inPlaceModifier-containers.d.ts +74 -0
  18. package/dist/baselines/atomizer/inPlaceModifier-containers.d.ts.map +1 -0
  19. package/dist/baselines/atomizer/inPlaceModifier-containers.js +171 -0
  20. package/dist/baselines/atomizer/inPlaceModifier-containers.js.map +1 -0
  21. package/dist/baselines/atomizer/inPlaceModifier-deletion.d.ts +88 -0
  22. package/dist/baselines/atomizer/inPlaceModifier-deletion.d.ts.map +1 -0
  23. package/dist/baselines/atomizer/inPlaceModifier-deletion.js +326 -0
  24. package/dist/baselines/atomizer/inPlaceModifier-deletion.js.map +1 -0
  25. package/dist/baselines/atomizer/inPlaceModifier-postprocess.d.ts +85 -0
  26. package/dist/baselines/atomizer/inPlaceModifier-postprocess.d.ts.map +1 -0
  27. package/dist/baselines/atomizer/inPlaceModifier-postprocess.js +402 -0
  28. package/dist/baselines/atomizer/inPlaceModifier-postprocess.js.map +1 -0
  29. package/dist/baselines/atomizer/inPlaceModifier-presplit.d.ts +39 -0
  30. package/dist/baselines/atomizer/inPlaceModifier-presplit.d.ts.map +1 -0
  31. package/dist/baselines/atomizer/inPlaceModifier-presplit.js +265 -0
  32. package/dist/baselines/atomizer/inPlaceModifier-presplit.js.map +1 -0
  33. package/dist/baselines/atomizer/inPlaceModifier-shared.d.ts +62 -0
  34. package/dist/baselines/atomizer/inPlaceModifier-shared.d.ts.map +1 -0
  35. package/dist/baselines/atomizer/inPlaceModifier-shared.js +139 -0
  36. package/dist/baselines/atomizer/inPlaceModifier-shared.js.map +1 -0
  37. package/dist/baselines/atomizer/inPlaceModifier-wrappers.d.ts +189 -0
  38. package/dist/baselines/atomizer/inPlaceModifier-wrappers.d.ts.map +1 -0
  39. package/dist/baselines/atomizer/inPlaceModifier-wrappers.js +427 -0
  40. package/dist/baselines/atomizer/inPlaceModifier-wrappers.js.map +1 -0
  41. package/dist/baselines/atomizer/inPlaceModifier.d.ts +6 -290
  42. package/dist/baselines/atomizer/inPlaceModifier.d.ts.map +1 -1
  43. package/dist/baselines/atomizer/inPlaceModifier.js +23 -1828
  44. package/dist/baselines/atomizer/inPlaceModifier.js.map +1 -1
  45. package/dist/baselines/atomizer/pipeline.d.ts +76 -1
  46. package/dist/baselines/atomizer/pipeline.d.ts.map +1 -1
  47. package/dist/baselines/atomizer/pipeline.js +204 -27
  48. package/dist/baselines/atomizer/pipeline.js.map +1 -1
  49. package/dist/baselines/atomizer/trackChangesAcceptorAst.d.ts.map +1 -1
  50. package/dist/baselines/atomizer/trackChangesAcceptorAst.js +56 -160
  51. package/dist/baselines/atomizer/trackChangesAcceptorAst.js.map +1 -1
  52. package/dist/compare-types.d.ts +151 -0
  53. package/dist/compare-types.d.ts.map +1 -0
  54. package/dist/compare-types.js +2 -0
  55. package/dist/compare-types.js.map +1 -0
  56. package/dist/core-types.d.ts +5 -1
  57. package/dist/core-types.d.ts.map +1 -1
  58. package/dist/core-types.js +5 -1
  59. package/dist/core-types.js.map +1 -1
  60. package/dist/footnotes.d.ts +8 -3
  61. package/dist/footnotes.d.ts.map +1 -1
  62. package/dist/footnotes.js +8 -3
  63. package/dist/footnotes.js.map +1 -1
  64. package/dist/index.d.ts +6 -150
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +6 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/integration/libreoffice-oracle.d.ts +41 -0
  69. package/dist/integration/libreoffice-oracle.d.ts.map +1 -0
  70. package/dist/integration/libreoffice-oracle.js +282 -0
  71. package/dist/integration/libreoffice-oracle.js.map +1 -0
  72. package/dist/primitives/accept_changes.d.ts +2 -2
  73. package/dist/primitives/accept_changes.d.ts.map +1 -1
  74. package/dist/primitives/accept_changes.js +24 -79
  75. package/dist/primitives/accept_changes.js.map +1 -1
  76. package/dist/primitives/comments.d.ts +12 -3
  77. package/dist/primitives/comments.d.ts.map +1 -1
  78. package/dist/primitives/comments.js +374 -97
  79. package/dist/primitives/comments.js.map +1 -1
  80. package/dist/primitives/content_fingerprint.d.ts +29 -0
  81. package/dist/primitives/content_fingerprint.d.ts.map +1 -0
  82. package/dist/primitives/content_fingerprint.js +63 -0
  83. package/dist/primitives/content_fingerprint.js.map +1 -0
  84. package/dist/primitives/document.d.ts +56 -15
  85. package/dist/primitives/document.d.ts.map +1 -1
  86. package/dist/primitives/document.js +303 -32
  87. package/dist/primitives/document.js.map +1 -1
  88. package/dist/primitives/document_view-comments.d.ts +18 -0
  89. package/dist/primitives/document_view-comments.d.ts.map +1 -0
  90. package/dist/primitives/document_view-comments.js +159 -0
  91. package/dist/primitives/document_view-comments.js.map +1 -0
  92. package/dist/primitives/document_view-headings.d.ts +45 -0
  93. package/dist/primitives/document_view-headings.d.ts.map +1 -0
  94. package/dist/primitives/document_view-headings.js +247 -0
  95. package/dist/primitives/document_view-headings.js.map +1 -0
  96. package/dist/primitives/document_view-styles.d.ts +11 -0
  97. package/dist/primitives/document_view-styles.d.ts.map +1 -0
  98. package/dist/primitives/document_view-styles.js +104 -0
  99. package/dist/primitives/document_view-styles.js.map +1 -0
  100. package/dist/primitives/document_view-toon.d.ts +37 -0
  101. package/dist/primitives/document_view-toon.d.ts.map +1 -0
  102. package/dist/primitives/document_view-toon.js +199 -0
  103. package/dist/primitives/document_view-toon.js.map +1 -0
  104. package/dist/primitives/document_view-types.d.ts +137 -0
  105. package/dist/primitives/document_view-types.d.ts.map +1 -0
  106. package/dist/primitives/document_view-types.js +2 -0
  107. package/dist/primitives/document_view-types.js.map +1 -0
  108. package/dist/primitives/document_view.d.ts +8 -106
  109. package/dist/primitives/document_view.d.ts.map +1 -1
  110. package/dist/primitives/document_view.js +134 -301
  111. package/dist/primitives/document_view.js.map +1 -1
  112. package/dist/primitives/dom-helpers.d.ts +9 -0
  113. package/dist/primitives/dom-helpers.d.ts.map +1 -1
  114. package/dist/primitives/dom-helpers.js +10 -1
  115. package/dist/primitives/dom-helpers.js.map +1 -1
  116. package/dist/primitives/footnotes.d.ts +4 -3
  117. package/dist/primitives/footnotes.d.ts.map +1 -1
  118. package/dist/primitives/footnotes.js +232 -44
  119. package/dist/primitives/footnotes.js.map +1 -1
  120. package/dist/primitives/formatting_tags.d.ts +6 -0
  121. package/dist/primitives/formatting_tags.d.ts.map +1 -1
  122. package/dist/primitives/formatting_tags.js +6 -1
  123. package/dist/primitives/formatting_tags.js.map +1 -1
  124. package/dist/primitives/index.d.ts +6 -0
  125. package/dist/primitives/index.d.ts.map +1 -1
  126. package/dist/primitives/index.js +5 -0
  127. package/dist/primitives/index.js.map +1 -1
  128. package/dist/primitives/layout.d.ts +4 -3
  129. package/dist/primitives/layout.d.ts.map +1 -1
  130. package/dist/primitives/layout.js +32 -3
  131. package/dist/primitives/layout.js.map +1 -1
  132. package/dist/primitives/merge_runs.d.ts +21 -3
  133. package/dist/primitives/merge_runs.d.ts.map +1 -1
  134. package/dist/primitives/merge_runs.js +32 -10
  135. package/dist/primitives/merge_runs.js.map +1 -1
  136. package/dist/primitives/namespaces.d.ts +6 -0
  137. package/dist/primitives/namespaces.d.ts.map +1 -1
  138. package/dist/primitives/namespaces.js +9 -0
  139. package/dist/primitives/namespaces.js.map +1 -1
  140. package/dist/primitives/reject_changes.d.ts +2 -2
  141. package/dist/primitives/reject_changes.d.ts.map +1 -1
  142. package/dist/primitives/reject_changes.js +24 -81
  143. package/dist/primitives/reject_changes.js.map +1 -1
  144. package/dist/primitives/semantic_tags.d.ts +7 -0
  145. package/dist/primitives/semantic_tags.d.ts.map +1 -1
  146. package/dist/primitives/semantic_tags.js +21 -3
  147. package/dist/primitives/semantic_tags.js.map +1 -1
  148. package/dist/primitives/serialize_html.d.ts +36 -0
  149. package/dist/primitives/serialize_html.d.ts.map +1 -0
  150. package/dist/primitives/serialize_html.js +393 -0
  151. package/dist/primitives/serialize_html.js.map +1 -0
  152. package/dist/primitives/serialize_markdown.d.ts +16 -0
  153. package/dist/primitives/serialize_markdown.d.ts.map +1 -0
  154. package/dist/primitives/serialize_markdown.js +300 -0
  155. package/dist/primitives/serialize_markdown.js.map +1 -0
  156. package/dist/primitives/serialize_plaintext.d.ts +15 -0
  157. package/dist/primitives/serialize_plaintext.d.ts.map +1 -0
  158. package/dist/primitives/serialize_plaintext.js +154 -0
  159. package/dist/primitives/serialize_plaintext.js.map +1 -0
  160. package/dist/primitives/styles.js +22 -22
  161. package/dist/primitives/styles.js.map +1 -1
  162. package/dist/primitives/tables.d.ts.map +1 -1
  163. package/dist/primitives/tables.js +13 -3
  164. package/dist/primitives/tables.js.map +1 -1
  165. package/dist/primitives/text.d.ts +2 -1
  166. package/dist/primitives/text.d.ts.map +1 -1
  167. package/dist/primitives/text.js +116 -12
  168. package/dist/primitives/text.js.map +1 -1
  169. package/dist/primitives/track-changes-emitter.d.ts +139 -0
  170. package/dist/primitives/track-changes-emitter.d.ts.map +1 -0
  171. package/dist/primitives/track-changes-emitter.js +241 -0
  172. package/dist/primitives/track-changes-emitter.js.map +1 -0
  173. package/dist/primitives/xml-helpers.d.ts +29 -0
  174. package/dist/primitives/xml-helpers.d.ts.map +1 -0
  175. package/dist/primitives/xml-helpers.js +35 -0
  176. package/dist/primitives/xml-helpers.js.map +1 -0
  177. package/dist/shared/ooxml/namespaces.d.ts +4 -1
  178. package/dist/shared/ooxml/namespaces.d.ts.map +1 -1
  179. package/dist/shared/ooxml/namespaces.js +4 -1
  180. package/dist/shared/ooxml/namespaces.js.map +1 -1
  181. package/package.json +7 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document_view-toon.d.ts","sourceRoot":"","sources":["../../src/primitives/document_view-toon.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAuB,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAyB5G;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,gBAAgB,EACnB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,oBAAoB,CAAA;CAAE,GACrE,MAAM,CAkDR;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,EAAE,GACxD,GAAG,CAAC,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAcnE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEpG;AAgCD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,UAAU,CAAC,GAAG,MAAM,EAAE,CAEhG;AAoBD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,UAAU,CAAC,GAAG,MAAM,EAAE,CAEvG;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,SAAS,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,UAAU,CAAC,EAAE,GAC1D,MAAM,EAAE,CAKV;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAqCjG;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,gBAAgB,EAAE,EACzB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,MAAM,CA+BR"}
@@ -0,0 +1,199 @@
1
+ import { collectInlineCommentMarkers, countVisibleTextCharacters, injectToonCommentMarkers } from './document_view-comments.js';
2
+ import { computeFingerprintToken } from './document_view-styles.js';
3
+ function headerStripFromText(params) {
4
+ // Mirrors Python TOONRenderer header stripping.
5
+ const { header } = params;
6
+ let { text } = params;
7
+ if (!header)
8
+ return text;
9
+ const headerNorm = header.trim().toLowerCase();
10
+ const textLower = text.toLowerCase();
11
+ for (const punct of [':', '.', '-', ';', '']) {
12
+ const testPrefix = `${headerNorm}${punct}`;
13
+ if (textLower.startsWith(testPrefix)) {
14
+ text = text.slice(testPrefix.length).trimStart();
15
+ return text;
16
+ }
17
+ }
18
+ if (text.startsWith(header)) {
19
+ text = text.slice(header.length).replace(/^[.:\-;]+/, '').trimStart();
20
+ }
21
+ return text;
22
+ }
23
+ /**
24
+ * Format a single toon data line for one DocumentViewNode.
25
+ * Handles table-context-aware style (th/td) and header stripping.
26
+ */
27
+ export function formatToonDataLine(n, options) {
28
+ let text = n.tagged_text;
29
+ let header = n.header;
30
+ let strippedPrefixVisibleLength = 0;
31
+ if (header) {
32
+ const strippedText = headerStripFromText({ header, text });
33
+ strippedPrefixVisibleLength = Math.max(0, countVisibleTextCharacters(text) - countVisibleTextCharacters(strippedText));
34
+ text = strippedText;
35
+ }
36
+ if (header && !text) {
37
+ text = header;
38
+ header = '';
39
+ strippedPrefixVisibleLength = 0;
40
+ }
41
+ const commentMarkers = options?.commentMarkers?.get(n.id);
42
+ if (commentMarkers && commentMarkers.length > 0) {
43
+ // Comment marker offsets are computed against the FULL paragraph visible text (raw
44
+ // run/char counting in `getComments()`). To translate to `tagged_text` positions we
45
+ // subtract:
46
+ // 1. `visible_offset_correction` — chars stripped at build time when extracting the
47
+ // manual list label and trimming following whitespace.
48
+ // 2. `strippedPrefixVisibleLength` — chars stripped at format time by the run-in-header
49
+ // extraction above.
50
+ const totalCorrection = (n.visible_offset_correction ?? 0) + strippedPrefixVisibleLength;
51
+ text = injectToonCommentMarkers(text, commentMarkers.map(({ offset, marker }) => ({
52
+ offset: Math.max(0, offset - totalCorrection),
53
+ marker,
54
+ })));
55
+ }
56
+ const tc = n.table_context;
57
+ let style;
58
+ if (tc) {
59
+ style = tc.is_header_row
60
+ ? `th(${tc.row_index},${tc.col_index})`
61
+ : `td(${tc.row_index},${tc.col_index})`;
62
+ }
63
+ else {
64
+ style = options?.compact
65
+ ? computeFingerprintToken(n.style_fingerprint, n.style)
66
+ : n.style;
67
+ }
68
+ return `${n.id} | ${n.list_label} | ${header} | ${style} | ${text}`;
69
+ }
70
+ /**
71
+ * Collect table marker info (dimensions) from nodes for #TABLE markers.
72
+ * Column headers are NOT included in the marker — they appear once in the th() rows.
73
+ */
74
+ export function collectTableMarkerInfo(nodes) {
75
+ const info = new Map();
76
+ for (const n of nodes) {
77
+ const tc = n.table_context;
78
+ if (!tc)
79
+ continue;
80
+ if (!info.has(tc.table_index)) {
81
+ info.set(tc.table_index, {
82
+ id: tc.table_id,
83
+ totalRows: tc.total_rows,
84
+ totalCols: tc.total_cols,
85
+ });
86
+ }
87
+ }
88
+ return info;
89
+ }
90
+ /**
91
+ * Format a #TABLE marker line from collected table info.
92
+ * Headers are omitted — they appear exactly once in the th(0,N) data rows.
93
+ */
94
+ export function formatTableMarker(info) {
95
+ return `#TABLE ${info.id} | ${info.totalRows} rows × ${info.totalCols} cols`;
96
+ }
97
+ function escapeToonCommentField(value) {
98
+ return value
99
+ .replaceAll('\r\n', '\\n')
100
+ .replaceAll('\r', '\\r')
101
+ .replaceAll('\n', '\\n')
102
+ .replaceAll('|', '\\|');
103
+ }
104
+ function formatCommentDate(date) {
105
+ return date ?? '-';
106
+ }
107
+ function collectToonCommentLines(comment, paragraphId, parentId) {
108
+ const author = escapeToonCommentField(comment.author || '-');
109
+ const date = formatCommentDate(comment.date);
110
+ const text = escapeToonCommentField(comment.text);
111
+ const line = parentId == null
112
+ ? `#COMMENT ${paragraphId} c${comment.id} ${author} ${date} | ${text}`
113
+ : `#REPLY c${comment.id} -> c${parentId} ${author} ${date} | ${text}`;
114
+ return [
115
+ line,
116
+ ...comment.replies.flatMap((reply) => collectToonCommentLines(reply, paragraphId, comment.id)),
117
+ ];
118
+ }
119
+ export function formatToonCommentLines(node) {
120
+ return node.comments?.flatMap((comment) => collectToonCommentLines(comment, node.id)) ?? [];
121
+ }
122
+ function collectToonCommentEndnoteLines(comment, paragraphId, parentId) {
123
+ const author = escapeToonCommentField(comment.author || '-');
124
+ const date = formatCommentDate(comment.date);
125
+ const text = escapeToonCommentField(comment.text);
126
+ const line = parentId == null
127
+ ? `c${comment.id} @ ${paragraphId} ${author} ${date} | ${text}`
128
+ : `c${comment.id} -> c${parentId} ${author} ${date} | ${text}`;
129
+ return [
130
+ line,
131
+ ...comment.replies.flatMap((reply) => collectToonCommentEndnoteLines(reply, paragraphId, comment.id)),
132
+ ];
133
+ }
134
+ export function formatToonCommentEndnoteLines(node) {
135
+ return node.comments?.flatMap((comment) => collectToonCommentEndnoteLines(comment, node.id)) ?? [];
136
+ }
137
+ export function formatToonCommentsEndnotesBlock(nodes) {
138
+ const commentLines = nodes.flatMap((node) => formatToonCommentEndnoteLines(node));
139
+ return commentLines.length > 0
140
+ ? ['#COMMENTS', ...commentLines]
141
+ : [];
142
+ }
143
+ export function renderToon(nodes, options = {}) {
144
+ const lines = ['#SCHEMA id | list_label | header | style | text'];
145
+ const commentMarkers = collectInlineCommentMarkers(nodes);
146
+ const lineOptions = { ...options, commentMarkers };
147
+ // Pre-scan: collect table marker info for #TABLE lines
148
+ const tableInfo = collectTableMarkerInfo(nodes);
149
+ let currentTableIndex = null;
150
+ for (const n of nodes) {
151
+ const tc = n.table_context;
152
+ const nodeTableIndex = tc ? tc.table_index : null;
153
+ // Close previous table if we left it or moved to a different table
154
+ if (currentTableIndex !== null && nodeTableIndex !== currentTableIndex) {
155
+ lines.push('#END_TABLE');
156
+ currentTableIndex = null;
157
+ }
158
+ // Open new table if entering one
159
+ if (nodeTableIndex !== null && currentTableIndex === null) {
160
+ const info = tableInfo.get(nodeTableIndex);
161
+ if (info)
162
+ lines.push(formatTableMarker(info));
163
+ currentTableIndex = nodeTableIndex;
164
+ }
165
+ lines.push(formatToonDataLine(n, lineOptions));
166
+ lines.push(...formatToonCommentLines(n));
167
+ }
168
+ // Close any open table at end
169
+ if (currentTableIndex !== null) {
170
+ lines.push('#END_TABLE');
171
+ }
172
+ return lines.join('\n');
173
+ }
174
+ export function renderToonWithCommentEndnotes(nodes, options = {}) {
175
+ const lines = ['#SCHEMA id | list_label | header | style | text'];
176
+ const tableInfo = collectTableMarkerInfo(nodes);
177
+ let currentTableIndex = null;
178
+ for (const n of nodes) {
179
+ const tc = n.table_context;
180
+ const nodeTableIndex = tc ? tc.table_index : null;
181
+ if (currentTableIndex !== null && nodeTableIndex !== currentTableIndex) {
182
+ lines.push('#END_TABLE');
183
+ currentTableIndex = null;
184
+ }
185
+ if (nodeTableIndex !== null && currentTableIndex === null) {
186
+ const info = tableInfo.get(nodeTableIndex);
187
+ if (info)
188
+ lines.push(formatTableMarker(info));
189
+ currentTableIndex = nodeTableIndex;
190
+ }
191
+ lines.push(formatToonDataLine(n, options));
192
+ }
193
+ if (currentTableIndex !== null) {
194
+ lines.push('#END_TABLE');
195
+ }
196
+ lines.push(...formatToonCommentsEndnotesBlock(nodes));
197
+ return lines.join('\n');
198
+ }
199
+ //# sourceMappingURL=document_view-toon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document_view-toon.js","sourceRoot":"","sources":["../../src/primitives/document_view-toon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ import type { LabelType } from './list_labels.js';
2
+ import type { ParagraphAlignment, RunFormatting } from './styles.js';
3
+ export type HeaderFormatting = {
4
+ bold: boolean;
5
+ italic: boolean;
6
+ underline: boolean;
7
+ };
8
+ export type HeadingSource = 'word_style' | 'run_in_header' | 'title_with_period' | 'title_with_colon' | 'title_caps_centered' | 'title_bare';
9
+ export type HeuristicHeadingSource = Exclude<HeadingSource, 'word_style'>;
10
+ export type HeadingValue = {
11
+ /**
12
+ * Heading label text. Semantics depend on `source`:
13
+ * - `word_style`: the full paragraph text (the entire paragraph IS the heading).
14
+ * - All heuristic sources (`run_in_header`, `title_with_period`, `title_with_colon`,
15
+ * `title_caps_centered`, `title_bare`): only the extracted heading prefix.
16
+ * For example, on `"Indemnification. The Company shall …"` the value is
17
+ * `"Indemnification"`, not the whole paragraph.
18
+ */
19
+ text: string;
20
+ source: HeadingSource;
21
+ level: number | null;
22
+ };
23
+ export type FormattingFingerprint = {
24
+ list_level: number;
25
+ left_indent_pt: number;
26
+ first_line_indent_pt: number;
27
+ style_name: string;
28
+ alignment: ParagraphAlignment;
29
+ };
30
+ export type DocumentStyleInfo = {
31
+ style_id: string;
32
+ display_name: string;
33
+ fingerprint: FormattingFingerprint;
34
+ example_node_id: string;
35
+ example_text: string;
36
+ count: number;
37
+ dominant_alignment: ParagraphAlignment;
38
+ };
39
+ export type DocumentStyles = {
40
+ styles: Map<string, DocumentStyleInfo>;
41
+ fingerprint_to_style: Map<string, string>;
42
+ };
43
+ export type DocumentViewCommentRange = {
44
+ startParagraphId: string;
45
+ endParagraphId: string;
46
+ startRunIndex?: number;
47
+ startCharOffset?: number;
48
+ endRunIndex?: number;
49
+ endCharOffset?: number;
50
+ };
51
+ export type DocumentViewComment = {
52
+ id: number;
53
+ author: string;
54
+ date: string | null;
55
+ initials: string;
56
+ text: string;
57
+ replies: DocumentViewComment[];
58
+ range?: DocumentViewCommentRange;
59
+ };
60
+ export type ToonCommentMarker = {
61
+ offset: number;
62
+ marker: string;
63
+ };
64
+ export type ToonCommentMarkerMap = Map<string, ToonCommentMarker[]>;
65
+ /** A single token produced by {@link tokenizeToonInline}. */
66
+ export type ToonInlineToken = {
67
+ kind: 'tag';
68
+ value: string;
69
+ } | {
70
+ kind: 'text';
71
+ value: string;
72
+ };
73
+ export type ListMetadata = {
74
+ list_level: number;
75
+ label_type: LabelType | null;
76
+ label_string: string;
77
+ header_text: string | null;
78
+ header_style: HeuristicHeadingSource | null;
79
+ header_formatting: HeaderFormatting | null;
80
+ is_auto_numbered: boolean;
81
+ };
82
+ export type TableContext = {
83
+ table_id: string;
84
+ table_index: number;
85
+ row_index: number;
86
+ col_index: number;
87
+ col_header: string;
88
+ total_rows: number;
89
+ total_cols: number;
90
+ is_header_row: boolean;
91
+ para_in_cell: number;
92
+ cell_para_count: number;
93
+ };
94
+ export type DocumentViewNode = {
95
+ id: string;
96
+ list_label: string;
97
+ header: string;
98
+ style: string;
99
+ text: string;
100
+ clean_text: string;
101
+ tagged_text: string;
102
+ list_metadata: ListMetadata;
103
+ style_fingerprint: FormattingFingerprint;
104
+ paragraph_style_id: string | null;
105
+ paragraph_style_name: string;
106
+ paragraph_alignment: ParagraphAlignment;
107
+ paragraph_indents_pt: {
108
+ left: number;
109
+ first_line: number;
110
+ };
111
+ numbering: {
112
+ num_id: string | null;
113
+ ilvl: number | null;
114
+ is_auto_numbered: boolean;
115
+ };
116
+ heading?: HeadingValue;
117
+ header_formatting: HeaderFormatting | null;
118
+ body_run_formatting: RunFormatting | null;
119
+ table_context?: TableContext;
120
+ comments?: DocumentViewComment[];
121
+ /**
122
+ * Number of visible characters stripped from the head of the raw paragraph text when
123
+ * extracting a manual list label (and trimming the trailing whitespace). Used by the
124
+ * inline-comment-marker injector to translate run/offset positions (which are computed
125
+ * against the FULL paragraph visible text by `getComments()`) into positions within
126
+ * `tagged_text` (which has the label stripped).
127
+ *
128
+ * Auto-numbered list paragraphs do NOT have their text stripped — their label lives in
129
+ * the `list_label` field separately — so this stays 0 for them. Run-in header stripping
130
+ * is handled separately at format time and is not included here.
131
+ */
132
+ visible_offset_correction?: number;
133
+ };
134
+ export type BuildDocumentViewOptions = {
135
+ include_semantic_tags?: boolean;
136
+ };
137
+ //# sourceMappingURL=document_view-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document_view-types.d.ts","sourceRoot":"","sources":["../../src/primitives/document_view-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=document_view-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document_view-types.js","sourceRoot":"","sources":["../../src/primitives/document_view-types.ts"],"names":[],"mappings":""}
@@ -1,111 +1,13 @@
1
- import { LabelType } from './list_labels.js';
2
- import { type ParagraphAlignment, type RunFormatting } from './styles.js';
3
1
  import { type FormattingMode } from './formatting_tags.js';
4
2
  import type { RelsMap } from './relationships.js';
5
- export type HeaderFormatting = {
6
- bold: boolean;
7
- italic: boolean;
8
- underline: boolean;
9
- };
10
- export type ListMetadata = {
11
- list_level: number;
12
- label_type: LabelType | null;
13
- label_string: string;
14
- header_text: string | null;
15
- header_style: string | null;
16
- header_formatting: HeaderFormatting | null;
17
- is_auto_numbered: boolean;
18
- };
19
- export type FormattingFingerprint = {
20
- list_level: number;
21
- left_indent_pt: number;
22
- first_line_indent_pt: number;
23
- style_name: string;
24
- alignment: ParagraphAlignment;
25
- };
26
- export type DocumentStyleInfo = {
27
- style_id: string;
28
- display_name: string;
29
- fingerprint: FormattingFingerprint;
30
- example_node_id: string;
31
- example_text: string;
32
- count: number;
33
- dominant_alignment: ParagraphAlignment;
34
- };
35
- export type DocumentStyles = {
36
- styles: Map<string, DocumentStyleInfo>;
37
- fingerprint_to_style: Map<string, string>;
38
- };
39
- export type TableContext = {
40
- table_id: string;
41
- table_index: number;
42
- row_index: number;
43
- col_index: number;
44
- col_header: string;
45
- total_rows: number;
46
- total_cols: number;
47
- is_header_row: boolean;
48
- para_in_cell: number;
49
- cell_para_count: number;
50
- };
51
- export type DocumentViewNode = {
52
- id: string;
53
- list_label: string;
54
- header: string;
55
- style: string;
56
- text: string;
57
- clean_text: string;
58
- tagged_text: string;
59
- list_metadata: ListMetadata;
60
- style_fingerprint: FormattingFingerprint;
61
- paragraph_style_id: string | null;
62
- paragraph_style_name: string;
63
- paragraph_alignment: ParagraphAlignment;
64
- paragraph_indents_pt: {
65
- left: number;
66
- first_line: number;
67
- };
68
- numbering: {
69
- num_id: string | null;
70
- ilvl: number | null;
71
- is_auto_numbered: boolean;
72
- };
73
- header_formatting: HeaderFormatting | null;
74
- body_run_formatting: RunFormatting | null;
75
- table_context?: TableContext;
76
- };
77
- export declare function discoverStyles(nodes: DocumentViewNode[]): DocumentStyles;
78
- /**
79
- * Format a single toon data line for one DocumentViewNode.
80
- * Handles table-context-aware style (th/td) and header stripping.
81
- */
82
- export declare function formatToonDataLine(n: DocumentViewNode, options?: {
83
- compact?: boolean;
84
- }): string;
85
- /**
86
- * Collect table marker info (dimensions) from nodes for #TABLE markers.
87
- * Column headers are NOT included in the marker — they appear once in the th() rows.
88
- */
89
- export declare function collectTableMarkerInfo(nodes: readonly Pick<DocumentViewNode, 'table_context'>[]): Map<number, {
90
- id: string;
91
- totalRows: number;
92
- totalCols: number;
93
- }>;
94
- /**
95
- * Format a #TABLE marker line from collected table info.
96
- * Headers are omitted — they appear exactly once in the th(0,N) data rows.
97
- */
98
- export declare function formatTableMarker(info: {
99
- id: string;
100
- totalRows: number;
101
- totalCols: number;
102
- }): string;
103
- export declare function renderToon(nodes: DocumentViewNode[], options?: {
104
- compact?: boolean;
105
- }): string;
106
- export type BuildDocumentViewOptions = {
107
- include_semantic_tags?: boolean;
108
- };
3
+ import type { BuildDocumentViewOptions, DocumentStyles, DocumentViewNode, TableContext } from './document_view-types.js';
4
+ export type { BuildDocumentViewOptions, DocumentViewNode, ListMetadata, TableContext } from './document_view-types.js';
5
+ export type { HeaderFormatting, HeadingSource, HeadingValue, HeuristicHeadingSource } from './document_view-headings.js';
6
+ export { discoverStyles } from './document_view-styles.js';
7
+ export type { DocumentStyleInfo, DocumentStyles, FormattingFingerprint } from './document_view-styles.js';
8
+ export { INLINE_COMMENT_MARKER_RUNTIME, TOON_INLINE_TAG_RE, collectInlineCommentMarkers, tokenizeToonInline } from './document_view-comments.js';
9
+ export type { DocumentViewComment, DocumentViewCommentRange, ToonCommentMarker, ToonCommentMarkerMap, ToonInlineToken } from './document_view-comments.js';
10
+ export { collectTableMarkerInfo, formatTableMarker, formatToonCommentEndnoteLines, formatToonCommentLines, formatToonCommentsEndnotesBlock, formatToonDataLine, renderToon, renderToonWithCommentEndnotes, } from './document_view-toon.js';
109
11
  export declare function buildDocumentView(params: {
110
12
  documentXml: Document;
111
13
  stylesXml: Document | null;
@@ -1 +1 @@
1
- {"version":3,"file":"document_view.d.ts","sourceRoot":"","sources":["../../src/primitives/document_view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document_view.d.ts","sourceRoot":"","sources":["../../src/primitives/document_view.ts"],"names":[],"mappings":"AAOA,OAAO,EAA8C,KAAK,cAAc,EAA6F,MAAM,sBAAsB,CAAC;AAClM,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAWlD,OAAO,KAAK,EACV,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAIhB,YAAY,EACb,MAAM,0BAA0B,CAAC;AAElC,YAAY,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACvH,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACzH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EAAE,6BAA6B,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjJ,YAAY,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC3J,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,6BAA6B,EAC7B,sBAAsB,EACtB,+BAA+B,EAC/B,kBAAkB,EAClB,UAAU,EACV,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AAuCjC,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,WAAW,EAAE,QAAQ,CAAC;IACtB,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC,EAAE,wBAAwB,CAAC;CACjC,GAAG;IAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAwBxD;AAmQD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,UAAU,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;IAC3E,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,YAAY,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;CAChC,GAAG;IAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CA4WxD"}