udf-cli 0.3.1 → 0.4.1

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 (56) hide show
  1. package/README.md +130 -7
  2. package/dist/bin/udf-cli.d.ts +0 -1
  3. package/dist/bin/udf-cli.js +1 -125
  4. package/dist/chunk-6564CQ7U.js +1 -0
  5. package/dist/chunk-UMC6EI4C.js +1 -0
  6. package/dist/mobile-4VK2JOUT.js +1 -0
  7. package/dist/module-resolve-XD725NCC.js +1 -0
  8. package/dist/pin-prompt-FSXBDU36.js +1 -0
  9. package/dist/sign-AELEVJHO.js +1 -0
  10. package/dist/src/index.d.ts +117 -6
  11. package/dist/src/index.js +1 -6
  12. package/package.json +19 -3
  13. package/dist/bin/udf-cli.js.map +0 -1
  14. package/dist/src/converters/html-to-udf.d.ts +0 -1
  15. package/dist/src/converters/html-to-udf.js +0 -7
  16. package/dist/src/converters/html-to-udf.js.map +0 -1
  17. package/dist/src/converters/markdown-to-udf.d.ts +0 -1
  18. package/dist/src/converters/markdown-to-udf.js +0 -7
  19. package/dist/src/converters/markdown-to-udf.js.map +0 -1
  20. package/dist/src/converters/udf-to-html.d.ts +0 -1
  21. package/dist/src/converters/udf-to-html.js +0 -7
  22. package/dist/src/converters/udf-to-html.js.map +0 -1
  23. package/dist/src/converters/udf-to-markdown.d.ts +0 -1
  24. package/dist/src/converters/udf-to-markdown.js +0 -7
  25. package/dist/src/converters/udf-to-markdown.js.map +0 -1
  26. package/dist/src/html/markdown-parser.d.ts +0 -2
  27. package/dist/src/html/markdown-parser.js +0 -172
  28. package/dist/src/html/markdown-parser.js.map +0 -1
  29. package/dist/src/html/markdown-serializer.d.ts +0 -2
  30. package/dist/src/html/markdown-serializer.js +0 -156
  31. package/dist/src/html/markdown-serializer.js.map +0 -1
  32. package/dist/src/html/parser.d.ts +0 -2
  33. package/dist/src/html/parser.js +0 -576
  34. package/dist/src/html/parser.js.map +0 -1
  35. package/dist/src/html/serializer.d.ts +0 -6
  36. package/dist/src/html/serializer.js +0 -285
  37. package/dist/src/html/serializer.js.map +0 -1
  38. package/dist/src/index.js.map +0 -1
  39. package/dist/src/model/document.d.ts +0 -107
  40. package/dist/src/model/document.js +0 -88
  41. package/dist/src/model/document.js.map +0 -1
  42. package/dist/src/udf/cdata-builder.d.ts +0 -14
  43. package/dist/src/udf/cdata-builder.js +0 -71
  44. package/dist/src/udf/cdata-builder.js.map +0 -1
  45. package/dist/src/udf/parser.d.ts +0 -2
  46. package/dist/src/udf/parser.js +0 -325
  47. package/dist/src/udf/parser.js.map +0 -1
  48. package/dist/src/udf/serializer.d.ts +0 -5
  49. package/dist/src/udf/serializer.js +0 -267
  50. package/dist/src/udf/serializer.js.map +0 -1
  51. package/dist/src/utils/color.d.ts +0 -9
  52. package/dist/src/utils/color.js +0 -87
  53. package/dist/src/utils/color.js.map +0 -1
  54. package/dist/src/utils/style.d.ts +0 -23
  55. package/dist/src/utils/style.js +0 -80
  56. package/dist/src/utils/style.js.map +0 -1
@@ -1,285 +0,0 @@
1
- import { Alignment, DEFAULT_TEXT_STYLE } from '../model/document.js';
2
- import { argbToCss } from '../utils/color.js';
3
- import { buildInlineStyle } from '../utils/style.js';
4
- // ---------------------------------------------------------------------------
5
- // HTML escaping
6
- // ---------------------------------------------------------------------------
7
- function escapeHtml(text) {
8
- return text
9
- .replace(/&/g, '&')
10
- .replace(/</g, '&lt;')
11
- .replace(/>/g, '&gt;');
12
- }
13
- // ---------------------------------------------------------------------------
14
- // Image format detection
15
- // ---------------------------------------------------------------------------
16
- function detectImageFormat(base64Data) {
17
- if (base64Data.startsWith('/9j/'))
18
- return 'jpeg';
19
- if (base64Data.startsWith('iVBOR'))
20
- return 'png';
21
- if (base64Data.startsWith('R0lGOD'))
22
- return 'gif';
23
- if (base64Data.startsWith('UklGR'))
24
- return 'webp';
25
- return 'png';
26
- }
27
- // ---------------------------------------------------------------------------
28
- // Alignment to CSS
29
- // ---------------------------------------------------------------------------
30
- function alignmentToCss(alignment) {
31
- switch (alignment) {
32
- case Alignment.Center:
33
- return 'center';
34
- case Alignment.Right:
35
- return 'right';
36
- case Alignment.Justify:
37
- return 'justify';
38
- default:
39
- return undefined;
40
- }
41
- }
42
- // ---------------------------------------------------------------------------
43
- // Inline element serialization
44
- // ---------------------------------------------------------------------------
45
- /**
46
- * Wrap `inner` HTML with bold/italic/underline/span tags based on the given
47
- * TextStyle. Used by both serializeTextRun and serializeTabRun.
48
- */
49
- function wrapStyled(inner, style) {
50
- const styleProps = {};
51
- const s = style;
52
- if (s.fontFamily !== DEFAULT_TEXT_STYLE.fontFamily) {
53
- styleProps.fontFamily = s.fontFamily;
54
- }
55
- if (s.fontSize !== DEFAULT_TEXT_STYLE.fontSize) {
56
- styleProps.fontSize = `${s.fontSize}pt`;
57
- }
58
- if (s.color !== DEFAULT_TEXT_STYLE.color) {
59
- styleProps.color = argbToCss(s.color);
60
- }
61
- if (s.backgroundColor !== DEFAULT_TEXT_STYLE.backgroundColor) {
62
- styleProps.backgroundColor = argbToCss(s.backgroundColor);
63
- }
64
- const needsSpan = Object.keys(styleProps).length > 0;
65
- const inlineStyle = needsSpan ? buildInlineStyle(styleProps) : '';
66
- let result = inner;
67
- if (s.underline) {
68
- result = `<u>${result}</u>`;
69
- }
70
- if (s.italic) {
71
- result = `<em>${result}</em>`;
72
- }
73
- if (s.bold) {
74
- result = `<strong>${result}</strong>`;
75
- }
76
- if (needsSpan) {
77
- result = `<span style="${inlineStyle}">${result}</span>`;
78
- }
79
- return result;
80
- }
81
- function serializeTextRun(run) {
82
- const text = escapeHtml(run.text);
83
- if (!text && !run.style.bold && !run.style.italic && !run.style.underline) {
84
- return '';
85
- }
86
- return wrapStyled(text, run.style);
87
- }
88
- function serializeTabRun(run) {
89
- const s = run.style;
90
- const isDefault = s.fontFamily === DEFAULT_TEXT_STYLE.fontFamily &&
91
- s.fontSize === DEFAULT_TEXT_STYLE.fontSize &&
92
- s.color === DEFAULT_TEXT_STYLE.color &&
93
- s.backgroundColor === DEFAULT_TEXT_STYLE.backgroundColor &&
94
- !s.bold &&
95
- !s.italic &&
96
- !s.underline;
97
- if (isDefault)
98
- return '<tab/>';
99
- return wrapStyled('<tab/>', s);
100
- }
101
- function serializeImageRun(run) {
102
- const format = detectImageFormat(run.data);
103
- return `<img src="data:image/${format};base64,${run.data}" width="${run.width}" height="${run.height}" />`;
104
- }
105
- function serializeInline(run) {
106
- if (run.type === 'text')
107
- return serializeTextRun(run);
108
- if (run.type === 'image')
109
- return serializeImageRun(run);
110
- if (run.type === 'tab')
111
- return serializeTabRun(run);
112
- return '';
113
- }
114
- // ---------------------------------------------------------------------------
115
- // Paragraph style
116
- // ---------------------------------------------------------------------------
117
- function buildParagraphStyle(para) {
118
- const props = {};
119
- const align = alignmentToCss(para.alignment);
120
- if (align)
121
- props.textAlign = align;
122
- if (para.lineSpacing !== 0) {
123
- props.lineHeight = String(1.0 + para.lineSpacing);
124
- }
125
- if (para.spaceBefore !== 0) {
126
- props.marginTop = `${para.spaceBefore}pt`;
127
- }
128
- if (para.spaceAfter !== 0) {
129
- props.marginBottom = `${para.spaceAfter}pt`;
130
- }
131
- if (para.leftIndent !== 0) {
132
- props.marginLeft = `${para.leftIndent}pt`;
133
- }
134
- if (para.rightIndent !== 0) {
135
- props.marginRight = `${para.rightIndent}pt`;
136
- }
137
- if (para.firstLineIndent !== 0) {
138
- props.textIndent = `${para.firstLineIndent}pt`;
139
- }
140
- if (para.tabStops && para.tabStops.length > 0) {
141
- props.tabStops = para.tabStops.map((p) => `${p}pt`).join(' ');
142
- }
143
- return buildInlineStyle(props);
144
- }
145
- // ---------------------------------------------------------------------------
146
- // Table serialization
147
- // ---------------------------------------------------------------------------
148
- function serializeTableCell(cell) {
149
- const attrs = [];
150
- if (cell.colspan > 1) {
151
- attrs.push(`colspan="${cell.colspan}"`);
152
- }
153
- if (cell.rowspan > 1) {
154
- attrs.push(`rowspan="${cell.rowspan}"`);
155
- }
156
- // Build cell style
157
- const styleProps = {};
158
- // Border
159
- if (cell.border.style !== 'borderStyle-none') {
160
- const borderColor = argbToCss(cell.borderColor);
161
- const borderWidth = cell.borderWidth || 0.5;
162
- if (cell.borderSpec === 15) {
163
- // All sides
164
- styleProps.border = `${borderWidth}px solid ${borderColor}`;
165
- }
166
- else {
167
- if (cell.borderSpec & 1)
168
- styleProps.borderTop = `${borderWidth}px solid ${borderColor}`;
169
- if (cell.borderSpec & 2)
170
- styleProps.borderRight = `${borderWidth}px solid ${borderColor}`;
171
- if (cell.borderSpec & 4)
172
- styleProps.borderBottom = `${borderWidth}px solid ${borderColor}`;
173
- if (cell.borderSpec & 8)
174
- styleProps.borderLeft = `${borderWidth}px solid ${borderColor}`;
175
- }
176
- }
177
- styleProps.padding = '4px';
178
- // Background color (skip white/default)
179
- const fillCss = argbToCss(cell.fillColor);
180
- if (fillCss !== '#ffffff' && fillCss !== '#000000') {
181
- styleProps.backgroundColor = fillCss;
182
- }
183
- // Also check for non-default unsigned white (16777215 -> #ffffff)
184
- if (cell.fillColor !== 16777215 && cell.fillColor !== -1) {
185
- styleProps.backgroundColor = fillCss;
186
- }
187
- if (cell.verticalAlign !== 'top') {
188
- styleProps.verticalAlign = cell.verticalAlign;
189
- }
190
- const style = buildInlineStyle(styleProps);
191
- if (style)
192
- attrs.push(`style="${style}"`);
193
- const attrStr = attrs.length > 0 ? ' ' + attrs.join(' ') : '';
194
- const content = cell.content.map(serializeBlock).join('');
195
- return `<td${attrStr}>${content}</td>`;
196
- }
197
- function serializeTable(table) {
198
- const rows = table.rows.map((row) => {
199
- const cells = row.cells.map(serializeTableCell).join('');
200
- return `<tr>${cells}</tr>`;
201
- }).join('');
202
- return `<table style="border-collapse:collapse">${rows}</table>`;
203
- }
204
- /**
205
- * Serialize a group of consecutive list paragraphs into <ol>/<ul>.
206
- */
207
- function serializeListGroup(group) {
208
- const tag = group.type === 'numbered' ? 'ol' : 'ul';
209
- const items = group.paragraphs.map((para) => {
210
- const content = para.runs.map(serializeInline).join('');
211
- return `<li>${content}</li>`;
212
- }).join('');
213
- return `<${tag}>${items}</${tag}>`;
214
- }
215
- // ---------------------------------------------------------------------------
216
- // Block serialization
217
- // ---------------------------------------------------------------------------
218
- function serializeParagraph(para) {
219
- const content = para.runs.map(serializeInline).join('');
220
- const style = buildParagraphStyle(para);
221
- const styleAttr = style ? ` style="${style}"` : '';
222
- const body = content || '<br />';
223
- return `<p${styleAttr}>${body}</p>`;
224
- }
225
- function serializeBlock(block) {
226
- if (block.type === 'paragraph') {
227
- // List paragraphs are handled by the grouping logic in serializeBlocks
228
- // If we reach here directly (e.g., inside a table cell), serialize as standalone
229
- if (block.list) {
230
- const tag = block.list.type === 'numbered' ? 'ol' : 'ul';
231
- const content = block.runs.map(serializeInline).join('');
232
- return `<${tag}><li>${content}</li></${tag}>`;
233
- }
234
- return serializeParagraph(block);
235
- }
236
- if (block.type === 'table') {
237
- return serializeTable(block);
238
- }
239
- if (block.type === 'pageBreak') {
240
- return '<page-break/>';
241
- }
242
- return '';
243
- }
244
- // ---------------------------------------------------------------------------
245
- // Top-level block grouping (handles consecutive list items)
246
- // ---------------------------------------------------------------------------
247
- function serializeBlocks(blocks) {
248
- const parts = [];
249
- let i = 0;
250
- while (i < blocks.length) {
251
- const block = blocks[i];
252
- if (block.type === 'paragraph' && block.list) {
253
- // Start a list group: collect consecutive paragraphs with same list type
254
- const listType = block.list.type;
255
- const group = {
256
- type: listType,
257
- level: block.list.level,
258
- paragraphs: [],
259
- };
260
- while (i < blocks.length &&
261
- blocks[i].type === 'paragraph' &&
262
- blocks[i].list?.type === listType) {
263
- group.paragraphs.push(blocks[i]);
264
- i++;
265
- }
266
- parts.push(serializeListGroup(group));
267
- }
268
- else {
269
- parts.push(serializeBlock(block));
270
- i++;
271
- }
272
- }
273
- return parts.join('');
274
- }
275
- // ---------------------------------------------------------------------------
276
- // Public API
277
- // ---------------------------------------------------------------------------
278
- /**
279
- * Serialize a Document model to an HTML string.
280
- * Produces body content only (no <html>, <head>, <body> wrapper).
281
- */
282
- export function serializeHtml(doc) {
283
- return serializeBlocks(doc.body);
284
- }
285
- //# sourceMappingURL=serializer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../../src/html/serializer.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAgBhE,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,WAAW,EACX,cAAc,EACd,eAAe,GAChB,MAAM,qBAAqB,CAAC"}
@@ -1,107 +0,0 @@
1
- export declare enum Alignment {
2
- Left = 0,
3
- Center = 1,
4
- Right = 2,
5
- Justify = 3
6
- }
7
- export interface TextStyle {
8
- fontFamily: string;
9
- fontSize: number;
10
- bold: boolean;
11
- italic: boolean;
12
- underline: boolean;
13
- color: number;
14
- backgroundColor: number;
15
- }
16
- export interface TextRun {
17
- type: 'text';
18
- text: string;
19
- style: TextStyle;
20
- }
21
- export interface ImageRun {
22
- type: 'image';
23
- data: string;
24
- width: number;
25
- height: number;
26
- }
27
- export interface TabRun {
28
- type: 'tab';
29
- style: TextStyle;
30
- }
31
- export interface PageBreak {
32
- type: 'pageBreak';
33
- }
34
- export type InlineElement = TextRun | ImageRun | TabRun;
35
- export interface ListProperties {
36
- type: 'numbered' | 'bulleted';
37
- numberType?: string;
38
- bulletType?: string;
39
- level: number;
40
- listId?: number;
41
- }
42
- export interface Paragraph {
43
- type: 'paragraph';
44
- alignment: Alignment;
45
- leftIndent: number;
46
- rightIndent: number;
47
- firstLineIndent: number;
48
- lineSpacing: number;
49
- spaceBefore: number;
50
- spaceAfter: number;
51
- runs: InlineElement[];
52
- list?: ListProperties;
53
- tabStops?: number[];
54
- }
55
- export interface BorderStyle {
56
- name: string;
57
- style: string;
58
- }
59
- export interface TableCell {
60
- colspan: number;
61
- rowspan: number;
62
- verticalAlign: 'top' | 'middle' | 'bottom';
63
- fillColor: number;
64
- border: BorderStyle;
65
- borderWidth: number;
66
- borderColor: number;
67
- borderSpec: number;
68
- content: BlockElement[];
69
- }
70
- export interface TableRow {
71
- name: string;
72
- rowType: string;
73
- height: number;
74
- border: BorderStyle;
75
- cells: TableCell[];
76
- }
77
- export interface Table {
78
- type: 'table';
79
- name: string;
80
- columns: number;
81
- columnWidths: number[];
82
- border: BorderStyle;
83
- rows: TableRow[];
84
- }
85
- export type BlockElement = Paragraph | Table | PageBreak;
86
- export interface PageFormat {
87
- mediaSizeName: number;
88
- leftMargin: number;
89
- rightMargin: number;
90
- topMargin: number;
91
- bottomMargin: number;
92
- paperOrientation: number;
93
- headerFOffset: number;
94
- footerFOffset: number;
95
- }
96
- export interface Document {
97
- pages: PageFormat;
98
- body: BlockElement[];
99
- }
100
- export declare const DEFAULT_TEXT_STYLE: TextStyle;
101
- export declare const DEFAULT_PAGE_FORMAT: PageFormat;
102
- export declare const DEFAULT_BORDER: BorderStyle;
103
- export declare function createParagraph(overrides?: Partial<Omit<Paragraph, 'type'>>): Paragraph;
104
- export declare function createTextRun(text: string, style?: Partial<TextStyle>): TextRun;
105
- export declare function createTable(rows: TableRow[], columnWidths: number[], overrides?: Partial<Omit<Table, 'type' | 'rows'>>): Table;
106
- export declare function createTableCell(content: BlockElement[], overrides?: Partial<TableCell>): TableCell;
107
- export declare function createTableRow(cells: TableCell[], overrides?: Partial<TableRow>): TableRow;
@@ -1,88 +0,0 @@
1
- export var Alignment;
2
- (function (Alignment) {
3
- Alignment[Alignment["Left"] = 0] = "Left";
4
- Alignment[Alignment["Center"] = 1] = "Center";
5
- Alignment[Alignment["Right"] = 2] = "Right";
6
- Alignment[Alignment["Justify"] = 3] = "Justify";
7
- })(Alignment || (Alignment = {}));
8
- // Defaults
9
- export const DEFAULT_TEXT_STYLE = {
10
- fontFamily: 'Times New Roman',
11
- fontSize: 12,
12
- bold: false,
13
- italic: false,
14
- underline: false,
15
- color: -16777216, // black (0xFF000000)
16
- backgroundColor: -1, // white (0xFFFFFFFF)
17
- };
18
- export const DEFAULT_PAGE_FORMAT = {
19
- mediaSizeName: 1,
20
- leftMargin: 42.52,
21
- rightMargin: 28.35,
22
- topMargin: 14.17,
23
- bottomMargin: 14.17,
24
- paperOrientation: 1,
25
- headerFOffset: 20.0,
26
- footerFOffset: 20.0,
27
- };
28
- export const DEFAULT_BORDER = {
29
- name: 'borderCell',
30
- style: 'borderStyle-solid',
31
- };
32
- export function createParagraph(overrides) {
33
- return {
34
- type: 'paragraph',
35
- alignment: Alignment.Left,
36
- leftIndent: 0,
37
- rightIndent: 0,
38
- firstLineIndent: 0,
39
- lineSpacing: 0,
40
- spaceBefore: 0,
41
- spaceAfter: 0,
42
- runs: [],
43
- ...overrides,
44
- };
45
- }
46
- export function createTextRun(text, style) {
47
- return {
48
- type: 'text',
49
- text,
50
- style: { ...DEFAULT_TEXT_STYLE, ...style },
51
- };
52
- }
53
- export function createTable(rows, columnWidths, overrides) {
54
- return {
55
- type: 'table',
56
- name: 'Sabit',
57
- columns: columnWidths.length,
58
- columnWidths,
59
- border: { ...DEFAULT_BORDER },
60
- rows,
61
- ...overrides,
62
- };
63
- }
64
- export function createTableCell(content, overrides) {
65
- return {
66
- colspan: 1,
67
- rowspan: 1,
68
- verticalAlign: 'top',
69
- fillColor: 16777215, // white (unsigned)
70
- border: { ...DEFAULT_BORDER },
71
- borderWidth: 0.5,
72
- borderColor: 0,
73
- borderSpec: 15, // all sides
74
- content,
75
- ...overrides,
76
- };
77
- }
78
- export function createTableRow(cells, overrides) {
79
- return {
80
- name: 'row1',
81
- rowType: 'dataRow',
82
- height: 0,
83
- border: { ...DEFAULT_BORDER },
84
- cells,
85
- ...overrides,
86
- };
87
- }
88
- //# sourceMappingURL=document.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"document.js","sourceRoot":"","sources":["../../../src/model/document.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,yCAAQ,CAAA;IACR,6CAAU,CAAA;IACV,2CAAS,CAAA;IACT,+CAAW,CAAA;AACb,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AA8GD,WAAW;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,UAAU,EAAE,iBAAiB;IAC7B,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,CAAC,QAAQ,EAAG,qBAAqB;IACxC,eAAe,EAAE,CAAC,CAAC,EAAE,qBAAqB;CAC3C,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,aAAa,EAAE,CAAC;IAChB,UAAU,EAAE,KAAK;IACjB,WAAW,EAAE,KAAK;IAClB,SAAS,EAAE,KAAK;IAChB,YAAY,EAAE,KAAK;IACnB,gBAAgB,EAAE,CAAC;IACnB,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,mBAAmB;CAC3B,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,SAA4C;IAC1E,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,SAAS,CAAC,IAAI;QACzB,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;QACd,eAAe,EAAE,CAAC;QAClB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,CAAC;QACb,IAAI,EAAE,EAAE;QACR,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,KAA0B;IACpE,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI;QACJ,KAAK,EAAE,EAAE,GAAG,kBAAkB,EAAE,GAAG,KAAK,EAAE;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAgB,EAAE,YAAsB,EAAE,SAAiD;IACrH,OAAO;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,YAAY,CAAC,MAAM;QAC5B,YAAY;QACZ,MAAM,EAAE,EAAE,GAAG,cAAc,EAAE;QAC7B,IAAI;QACJ,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAuB,EAAE,SAA8B;IACrF,OAAO;QACL,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,QAAQ,EAAE,mBAAmB;QACxC,MAAM,EAAE,EAAE,GAAG,cAAc,EAAE;QAC7B,WAAW,EAAE,GAAG;QAChB,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,EAAE,EAAE,YAAY;QAC5B,OAAO;QACP,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAkB,EAAE,SAA6B;IAC9E,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,EAAE,GAAG,cAAc,EAAE;QAC7B,KAAK;QACL,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
@@ -1,14 +0,0 @@
1
- import type { BlockElement, InlineElement } from '../model/document.js';
2
- export interface OffsetEntry {
3
- element: InlineElement;
4
- startOffset: number;
5
- length: number;
6
- blockId: number;
7
- }
8
- export interface CdataResult {
9
- cdata: string;
10
- entries: OffsetEntry[];
11
- }
12
- /** Count Unicode codepoints (runes), not UTF-16 code units. */
13
- export declare function runeCount(s: string): number;
14
- export declare function buildCdata(body: BlockElement[]): CdataResult;
@@ -1,71 +0,0 @@
1
- /** Count Unicode codepoints (runes), not UTF-16 code units. */
2
- export function runeCount(s) {
3
- return Array.from(s).length;
4
- }
5
- export function buildCdata(body) {
6
- const textParts = [];
7
- const entries = [];
8
- let offset = 0;
9
- let blockId = 0;
10
- function processParagraph(para) {
11
- const currentBlockId = blockId++;
12
- if (para.runs.length === 0) {
13
- // Empty paragraph: insert zero-width space
14
- textParts.push('\u200B');
15
- offset += 1;
16
- }
17
- else {
18
- for (const run of para.runs) {
19
- if (run.type === 'text') {
20
- const len = runeCount(run.text);
21
- entries.push({ element: run, startOffset: offset, length: len, blockId: currentBlockId });
22
- textParts.push(run.text);
23
- offset += len;
24
- }
25
- else if (run.type === 'image') {
26
- entries.push({ element: run, startOffset: offset, length: 1, blockId: currentBlockId });
27
- textParts.push('\uFFFC');
28
- offset += 1;
29
- }
30
- else if (run.type === 'tab') {
31
- entries.push({ element: run, startOffset: offset, length: 1, blockId: currentBlockId });
32
- textParts.push('\t');
33
- offset += 1;
34
- }
35
- }
36
- }
37
- // Paragraph separator
38
- textParts.push('\n');
39
- offset += 1;
40
- }
41
- function processTable(table) {
42
- for (const row of table.rows) {
43
- for (const cell of row.cells) {
44
- processBlocks(cell.content);
45
- }
46
- }
47
- }
48
- function processBlocks(blocks) {
49
- for (const block of blocks) {
50
- if (block.type === 'paragraph') {
51
- processParagraph(block);
52
- }
53
- else if (block.type === 'table') {
54
- processTable(block);
55
- }
56
- else if (block.type === 'pageBreak') {
57
- // Matches the inner empty paragraph the UDF serializer emits.
58
- // 1 codepoint for the zero-width space + 1 for paragraph separator.
59
- textParts.push('​\n');
60
- offset += 2;
61
- blockId++;
62
- }
63
- }
64
- }
65
- processBlocks(body);
66
- return {
67
- cdata: textParts.join(''),
68
- entries,
69
- };
70
- }
71
- //# sourceMappingURL=cdata-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cdata-builder.js","sourceRoot":"","sources":["../../../src/udf/cdata-builder.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import type { Document } from '../model/document.js';
2
- export declare function parseUdf(buffer: Buffer): Promise<Document>;