js.documents 2.0.0 → 2.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.
- package/README.md +34 -28
- package/dist/codecs/registry.cjs +7 -0
- package/dist/codecs/registry.js +7 -0
- package/dist/convert/capability.cjs +5 -0
- package/dist/convert/capability.js +5 -0
- package/dist/convert/codec.cjs +20 -0
- package/dist/convert/codec.d.cts +5 -1
- package/dist/convert/codec.d.ts +5 -1
- package/dist/convert/codec.js +19 -3
- package/dist/convert/composition.cjs +32 -7
- package/dist/convert/composition.d.cts +9 -5
- package/dist/convert/composition.d.ts +9 -5
- package/dist/convert/composition.js +32 -7
- package/dist/convert/convert.cjs +32 -0
- package/dist/convert/convert.d.cts +18 -1
- package/dist/convert/convert.d.ts +18 -1
- package/dist/convert/convert.js +25 -1
- package/dist/convert/local.cjs +2 -0
- package/dist/convert/local.js +2 -0
- package/dist/convert/port.cjs +1 -0
- package/dist/convert/port.d.cts +3 -0
- package/dist/convert/port.d.ts +3 -0
- package/dist/convert/port.js +1 -0
- package/dist/csv/read.cjs +85 -0
- package/dist/csv/read.d.cts +10 -0
- package/dist/csv/read.d.ts +10 -0
- package/dist/csv/read.js +84 -0
- package/dist/csv/records.cjs +85 -0
- package/dist/csv/records.d.cts +10 -0
- package/dist/csv/records.d.ts +10 -0
- package/dist/csv/records.js +80 -0
- package/dist/csv/text.cjs +22 -0
- package/dist/csv/text.d.cts +8 -0
- package/dist/csv/text.d.ts +8 -0
- package/dist/csv/text.js +19 -0
- package/dist/csv/write.cjs +75 -0
- package/dist/csv/write.d.cts +22 -0
- package/dist/csv/write.d.ts +22 -0
- package/dist/csv/write.js +71 -0
- package/dist/index.cjs +27 -1
- package/dist/index.d.cts +9 -5
- package/dist/index.d.ts +9 -5
- package/dist/index.js +9 -5
- package/dist/layout/reconstruct.cjs +1 -1
- package/dist/layout/reconstruct.js +1 -1
- package/dist/metadata/write.cjs +1 -0
- package/dist/metadata/write.js +1 -0
- package/dist/model/bytes.cjs +2 -0
- package/dist/model/bytes.d.cts +2 -1
- package/dist/model/bytes.d.ts +2 -1
- package/dist/model/bytes.js +2 -1
- package/dist/odb/csv.cjs +3 -6
- package/dist/odb/csv.js +3 -6
- package/package.json +1 -1
|
@@ -15,6 +15,9 @@ import { readOdpContent } from "../odf/odp/read.js";
|
|
|
15
15
|
import { readOdsContent } from "../odf/ods/read.js";
|
|
16
16
|
import { readOdgContent } from "../odf/odg/read.js";
|
|
17
17
|
import { decodeMarkdownText, encodeMarkdownText } from "../markdown/text.js";
|
|
18
|
+
import { decodeCsvText, encodeCsvText } from "../csv/text.js";
|
|
19
|
+
import { readCsvContent } from "../csv/read.js";
|
|
20
|
+
import { buildCsvText } from "../csv/write.js";
|
|
18
21
|
import { convertWordprocessingToLayout } from "../layout/engine.js";
|
|
19
22
|
import { convertPresentationToLayout } from "../layout/slides.js";
|
|
20
23
|
import { throwIfAborted } from "../ports/abort.js";
|
|
@@ -38,8 +41,12 @@ const CONTENT_FORMATS = [
|
|
|
38
41
|
"odp",
|
|
39
42
|
"ods",
|
|
40
43
|
"odg",
|
|
44
|
+
"csv",
|
|
41
45
|
"markdown"
|
|
42
46
|
];
|
|
47
|
+
function isTextFormatNode(node) {
|
|
48
|
+
return !node.hasSourcePackage;
|
|
49
|
+
}
|
|
43
50
|
const FORMAT_NODES = {
|
|
44
51
|
docx: {
|
|
45
52
|
variant: "wordprocessing",
|
|
@@ -115,6 +122,21 @@ const FORMAT_NODES = {
|
|
|
115
122
|
build: (content) => buildMarkdownText(content),
|
|
116
123
|
encode: (text) => encodeMarkdownText(text),
|
|
117
124
|
hasSourcePackage: false
|
|
125
|
+
},
|
|
126
|
+
csv: {
|
|
127
|
+
variant: "spreadsheet",
|
|
128
|
+
family: "csv",
|
|
129
|
+
decode: (bytes) => decodeCsvText(bytes),
|
|
130
|
+
read: (text, options) => readCsvContent(text, {
|
|
131
|
+
delimiter: options?.delimiter,
|
|
132
|
+
onCellTypeInference: options?.onCellTypeInference
|
|
133
|
+
}),
|
|
134
|
+
build: (content, options) => buildCsvText(content, {
|
|
135
|
+
delimiter: options?.delimiter,
|
|
136
|
+
sheet: options?.sheet
|
|
137
|
+
}),
|
|
138
|
+
encode: (text) => encodeCsvText(text),
|
|
139
|
+
hasSourcePackage: false
|
|
118
140
|
}
|
|
119
141
|
};
|
|
120
142
|
const LAYOUT_CAPABLE = /* @__PURE__ */ new Set([
|
|
@@ -161,7 +183,7 @@ function executeBridge(source, target, bytes, options) {
|
|
|
161
183
|
const sourceNode = FORMAT_NODES[source];
|
|
162
184
|
const targetNode = FORMAT_NODES[target];
|
|
163
185
|
let content;
|
|
164
|
-
if (sourceNode
|
|
186
|
+
if (isTextFormatNode(sourceNode)) {
|
|
165
187
|
const text = sourceNode.decode(bytes);
|
|
166
188
|
content = sourceNode.read(text, options);
|
|
167
189
|
} else {
|
|
@@ -181,8 +203,8 @@ function executeBridge(source, target, bytes, options) {
|
|
|
181
203
|
formatVersion: DOCUMENT_PACKAGE_FORMAT_VERSION,
|
|
182
204
|
content: buildContent
|
|
183
205
|
});
|
|
184
|
-
if (targetNode
|
|
185
|
-
const text = targetNode.build(buildContent);
|
|
206
|
+
if (isTextFormatNode(targetNode)) {
|
|
207
|
+
const text = targetNode.build(buildContent, options);
|
|
186
208
|
return targetNode.encode(text);
|
|
187
209
|
}
|
|
188
210
|
const pkg = targetNode.build(buildContent, options);
|
|
@@ -193,7 +215,7 @@ function executeToPdf(format, bytes, options) {
|
|
|
193
215
|
const node = FORMAT_NODES[format];
|
|
194
216
|
let content;
|
|
195
217
|
let fonts;
|
|
196
|
-
if (node
|
|
218
|
+
if (isTextFormatNode(node)) {
|
|
197
219
|
throwIfAborted(options?.signal);
|
|
198
220
|
const text = node.decode(bytes);
|
|
199
221
|
const read = node.read(text, options);
|
|
@@ -294,7 +316,10 @@ function executeFromPdf(target, bytes, options) {
|
|
|
294
316
|
signal: options?.signal,
|
|
295
317
|
sink: options?.sink
|
|
296
318
|
});
|
|
297
|
-
const content = RECONSTRUCTORS[node.variant](layout, {
|
|
319
|
+
const content = RECONSTRUCTORS[node.variant](layout, {
|
|
320
|
+
signal: options?.signal,
|
|
321
|
+
onCellTypeInference: options?.onCellTypeInference
|
|
322
|
+
});
|
|
298
323
|
const pages = layout.pages.map((page) => ({
|
|
299
324
|
widthPt: page.widthPt,
|
|
300
325
|
heightPt: page.heightPt
|
|
@@ -304,8 +329,8 @@ function executeFromPdf(target, bytes, options) {
|
|
|
304
329
|
content,
|
|
305
330
|
pages
|
|
306
331
|
});
|
|
307
|
-
if (node
|
|
308
|
-
const text = node.build(content);
|
|
332
|
+
if (isTextFormatNode(node)) {
|
|
333
|
+
const text = node.build(content, options);
|
|
309
334
|
return node.encode(text);
|
|
310
335
|
}
|
|
311
336
|
const pkg = node.build(content);
|
package/dist/convert/convert.cjs
CHANGED
|
@@ -40,6 +40,9 @@ function odgToPdf(bytes, options) {
|
|
|
40
40
|
function markdownToPdf(bytes, options) {
|
|
41
41
|
return require_convert_composition.convertDocument("markdown", "pdf", bytes, options);
|
|
42
42
|
}
|
|
43
|
+
function csvToPdf(bytes, options) {
|
|
44
|
+
return require_convert_composition.convertDocument("csv", "pdf", bytes, options);
|
|
45
|
+
}
|
|
43
46
|
const STANDALONE_FORMULA_SIZE_PT = 18;
|
|
44
47
|
const STANDALONE_FORMULA_MARGIN_PT = 72;
|
|
45
48
|
function odfToPdf(bytes, options) {
|
|
@@ -113,6 +116,9 @@ function pdfToOds(bytes, options) {
|
|
|
113
116
|
function pdfToMarkdown(bytes, options) {
|
|
114
117
|
return require_convert_composition.convertDocument("pdf", "markdown", bytes, options);
|
|
115
118
|
}
|
|
119
|
+
function pdfToCsv(bytes, options) {
|
|
120
|
+
return require_convert_composition.convertDocument("pdf", "csv", bytes, options);
|
|
121
|
+
}
|
|
116
122
|
function odtToDocx(bytes, options) {
|
|
117
123
|
return require_convert_composition.convertDocument("odt", "docx", bytes, options);
|
|
118
124
|
}
|
|
@@ -143,6 +149,18 @@ function markdownToOdt(bytes, options) {
|
|
|
143
149
|
function odtToMarkdown(bytes, options) {
|
|
144
150
|
return require_convert_composition.convertDocument("odt", "markdown", bytes, options);
|
|
145
151
|
}
|
|
152
|
+
function csvToXlsx(bytes, options) {
|
|
153
|
+
return require_convert_composition.convertDocument("csv", "xlsx", bytes, options);
|
|
154
|
+
}
|
|
155
|
+
function xlsxToCsv(bytes, options) {
|
|
156
|
+
return require_convert_composition.convertDocument("xlsx", "csv", bytes, options);
|
|
157
|
+
}
|
|
158
|
+
function csvToOds(bytes, options) {
|
|
159
|
+
return require_convert_composition.convertDocument("csv", "ods", bytes, options);
|
|
160
|
+
}
|
|
161
|
+
function odsToCsv(bytes, options) {
|
|
162
|
+
return require_convert_composition.convertDocument("ods", "csv", bytes, options);
|
|
163
|
+
}
|
|
146
164
|
function docxToPptx(bytes, options) {
|
|
147
165
|
return require_convert_composition.convertDocument("docx", "pptx", bytes, options);
|
|
148
166
|
}
|
|
@@ -167,6 +185,12 @@ function xlsxToMarkdown(bytes, options) {
|
|
|
167
185
|
function markdownToXlsx(bytes, options) {
|
|
168
186
|
return require_convert_composition.convertDocument("markdown", "xlsx", bytes, options);
|
|
169
187
|
}
|
|
188
|
+
function csvToMarkdown(bytes, options) {
|
|
189
|
+
return require_convert_composition.convertDocument("csv", "markdown", bytes, options);
|
|
190
|
+
}
|
|
191
|
+
function markdownToCsv(bytes, options) {
|
|
192
|
+
return require_convert_composition.convertDocument("markdown", "csv", bytes, options);
|
|
193
|
+
}
|
|
170
194
|
var OdmUnresolvedSectionError = class extends Error {
|
|
171
195
|
hrefs;
|
|
172
196
|
constructor(hrefs) {
|
|
@@ -312,11 +336,16 @@ function odbReportToPdf(content, options) {
|
|
|
312
336
|
}
|
|
313
337
|
//#endregion
|
|
314
338
|
exports.OdmUnresolvedSectionError = OdmUnresolvedSectionError;
|
|
339
|
+
exports.csvToMarkdown = csvToMarkdown;
|
|
340
|
+
exports.csvToOds = csvToOds;
|
|
341
|
+
exports.csvToPdf = csvToPdf;
|
|
342
|
+
exports.csvToXlsx = csvToXlsx;
|
|
315
343
|
exports.docxToMarkdown = docxToMarkdown;
|
|
316
344
|
exports.docxToOdt = docxToOdt;
|
|
317
345
|
exports.docxToPdf = docxToPdf;
|
|
318
346
|
exports.docxToPptx = docxToPptx;
|
|
319
347
|
exports.inlineOdmSectionToContentSection = inlineOdmSectionToContentSection;
|
|
348
|
+
exports.markdownToCsv = markdownToCsv;
|
|
320
349
|
exports.markdownToDocx = markdownToDocx;
|
|
321
350
|
exports.markdownToOdt = markdownToOdt;
|
|
322
351
|
exports.markdownToPdf = markdownToPdf;
|
|
@@ -332,12 +361,14 @@ exports.odmToPdf = odmToPdf;
|
|
|
332
361
|
exports.odpToOdt = odpToOdt;
|
|
333
362
|
exports.odpToPdf = odpToPdf;
|
|
334
363
|
exports.odpToPptx = odpToPptx;
|
|
364
|
+
exports.odsToCsv = odsToCsv;
|
|
335
365
|
exports.odsToPdf = odsToPdf;
|
|
336
366
|
exports.odsToXlsx = odsToXlsx;
|
|
337
367
|
exports.odtToDocx = odtToDocx;
|
|
338
368
|
exports.odtToMarkdown = odtToMarkdown;
|
|
339
369
|
exports.odtToOdp = odtToOdp;
|
|
340
370
|
exports.odtToPdf = odtToPdf;
|
|
371
|
+
exports.pdfToCsv = pdfToCsv;
|
|
341
372
|
exports.pdfToDocx = pdfToDocx;
|
|
342
373
|
exports.pdfToMarkdown = pdfToMarkdown;
|
|
343
374
|
exports.pdfToOdg = pdfToOdg;
|
|
@@ -349,6 +380,7 @@ exports.pdfToXlsx = pdfToXlsx;
|
|
|
349
380
|
exports.pptxToDocx = pptxToDocx;
|
|
350
381
|
exports.pptxToOdp = pptxToOdp;
|
|
351
382
|
exports.pptxToPdf = pptxToPdf;
|
|
383
|
+
exports.xlsxToCsv = xlsxToCsv;
|
|
352
384
|
exports.xlsxToMarkdown = xlsxToMarkdown;
|
|
353
385
|
exports.xlsxToOds = xlsxToOds;
|
|
354
386
|
exports.xlsxToPdf = xlsxToPdf;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { t as ClockPort } from "../clock-C7SUuYN0.cjs";
|
|
2
|
+
import { CellTypeInferenceSink } from "../layout/cell-typing.cjs";
|
|
2
3
|
import { t as OmmlDiagnostic } from "../shared-DLZ3IQUl.cjs";
|
|
3
4
|
import { HsqldbDecodeOptions } from "../hsqldb/rowformat.cjs";
|
|
4
5
|
import { DocumentFontRegistryOptions } from "../fonts/registry.cjs";
|
|
@@ -26,6 +27,15 @@ declare function odpToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPd
|
|
|
26
27
|
declare function odsToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
|
|
27
28
|
declare function odgToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
|
|
28
29
|
declare function markdownToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
|
|
30
|
+
interface CsvReadOptions {
|
|
31
|
+
readonly delimiter?: string;
|
|
32
|
+
readonly onCellTypeInference?: CellTypeInferenceSink;
|
|
33
|
+
}
|
|
34
|
+
interface CsvWriteOptions {
|
|
35
|
+
readonly delimiter?: string;
|
|
36
|
+
readonly sheet?: string;
|
|
37
|
+
}
|
|
38
|
+
declare function csvToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
|
|
29
39
|
declare function odfToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
|
|
30
40
|
interface PdfToDocumentOptions {
|
|
31
41
|
readonly signal?: AbortSignal;
|
|
@@ -39,6 +49,7 @@ declare function pdfToOdp(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumen
|
|
|
39
49
|
declare function pdfToOdg(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
|
|
40
50
|
declare function pdfToOds(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
|
|
41
51
|
declare function pdfToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
|
|
52
|
+
declare function pdfToCsv(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
|
|
42
53
|
interface DocumentBridgeOptions {
|
|
43
54
|
readonly signal?: AbortSignal;
|
|
44
55
|
readonly onDocument?: (pkg: DocumentPackage) => void;
|
|
@@ -67,6 +78,10 @@ declare function markdownToDocx(bytes: Uint8Array<ArrayBuffer>, options?: Docume
|
|
|
67
78
|
declare function docxToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
|
|
68
79
|
declare function markdownToOdt(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
|
|
69
80
|
declare function odtToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
|
|
81
|
+
declare function csvToXlsx(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
|
|
82
|
+
declare function xlsxToCsv(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
|
|
83
|
+
declare function csvToOds(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
|
|
84
|
+
declare function odsToCsv(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
|
|
70
85
|
declare function docxToPptx(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
|
|
71
86
|
declare function pptxToDocx(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
|
|
72
87
|
declare function odtToOdp(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
|
|
@@ -75,6 +90,8 @@ declare function xlsxToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToP
|
|
|
75
90
|
declare function pdfToXlsx(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
|
|
76
91
|
declare function xlsxToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions): Uint8Array<ArrayBuffer>;
|
|
77
92
|
declare function markdownToXlsx(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions): Uint8Array<ArrayBuffer>;
|
|
93
|
+
declare function csvToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
|
|
94
|
+
declare function markdownToCsv(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
|
|
78
95
|
interface OdmToPdfOptions extends DocumentToPdfOptions {
|
|
79
96
|
readonly resolveSubDocument?: (href: string) => Uint8Array<ArrayBuffer> | undefined;
|
|
80
97
|
}
|
|
@@ -103,4 +120,4 @@ interface OdbReportToOdtOptions {
|
|
|
103
120
|
declare function odbReportToOdt(content: ContentDocument, options?: OdbReportToOdtOptions): Uint8Array<ArrayBuffer>;
|
|
104
121
|
declare function odbReportToPdf(content: ContentDocument, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
|
|
105
122
|
//#endregion
|
|
106
|
-
export { ComposedDocumentOptions, DocumentBridgeOptions, DocumentToPdfOptions, OdbConversionOptions, OdbReportToDocxOptions, OdbReportToOdtOptions, OdbToCsvOptions, OdmToPdfOptions, OdmUnresolvedSectionError, PdfToDocumentOptions, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, inlineOdmSectionToContentSection, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToXlsx, pptxToDocx, pptxToOdp, pptxToPdf, xlsxToMarkdown, xlsxToOds, xlsxToPdf };
|
|
123
|
+
export { ComposedDocumentOptions, CsvReadOptions, CsvWriteOptions, DocumentBridgeOptions, DocumentToPdfOptions, OdbConversionOptions, OdbReportToDocxOptions, OdbReportToOdtOptions, OdbToCsvOptions, OdmToPdfOptions, OdmUnresolvedSectionError, PdfToDocumentOptions, csvToMarkdown, csvToOds, csvToPdf, csvToXlsx, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, inlineOdmSectionToContentSection, markdownToCsv, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToCsv, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToXlsx, pptxToDocx, pptxToOdp, pptxToPdf, xlsxToCsv, xlsxToMarkdown, xlsxToOds, xlsxToPdf };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { t as ClockPort } from "../clock-C7SUuYN0.js";
|
|
2
|
+
import { CellTypeInferenceSink } from "../layout/cell-typing.js";
|
|
2
3
|
import { t as OmmlDiagnostic } from "../shared-DUOzjwcL.js";
|
|
3
4
|
import { HsqldbDecodeOptions } from "../hsqldb/rowformat.js";
|
|
4
5
|
import { DocumentFontRegistryOptions } from "../fonts/registry.js";
|
|
@@ -26,6 +27,15 @@ declare function odpToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPd
|
|
|
26
27
|
declare function odsToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
|
|
27
28
|
declare function odgToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
|
|
28
29
|
declare function markdownToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
|
|
30
|
+
interface CsvReadOptions {
|
|
31
|
+
readonly delimiter?: string;
|
|
32
|
+
readonly onCellTypeInference?: CellTypeInferenceSink;
|
|
33
|
+
}
|
|
34
|
+
interface CsvWriteOptions {
|
|
35
|
+
readonly delimiter?: string;
|
|
36
|
+
readonly sheet?: string;
|
|
37
|
+
}
|
|
38
|
+
declare function csvToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
|
|
29
39
|
declare function odfToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
|
|
30
40
|
interface PdfToDocumentOptions {
|
|
31
41
|
readonly signal?: AbortSignal;
|
|
@@ -39,6 +49,7 @@ declare function pdfToOdp(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumen
|
|
|
39
49
|
declare function pdfToOdg(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
|
|
40
50
|
declare function pdfToOds(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
|
|
41
51
|
declare function pdfToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
|
|
52
|
+
declare function pdfToCsv(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
|
|
42
53
|
interface DocumentBridgeOptions {
|
|
43
54
|
readonly signal?: AbortSignal;
|
|
44
55
|
readonly onDocument?: (pkg: DocumentPackage) => void;
|
|
@@ -67,6 +78,10 @@ declare function markdownToDocx(bytes: Uint8Array<ArrayBuffer>, options?: Docume
|
|
|
67
78
|
declare function docxToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
|
|
68
79
|
declare function markdownToOdt(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
|
|
69
80
|
declare function odtToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
|
|
81
|
+
declare function csvToXlsx(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
|
|
82
|
+
declare function xlsxToCsv(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
|
|
83
|
+
declare function csvToOds(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
|
|
84
|
+
declare function odsToCsv(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
|
|
70
85
|
declare function docxToPptx(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
|
|
71
86
|
declare function pptxToDocx(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
|
|
72
87
|
declare function odtToOdp(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
|
|
@@ -75,6 +90,8 @@ declare function xlsxToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToP
|
|
|
75
90
|
declare function pdfToXlsx(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
|
|
76
91
|
declare function xlsxToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions): Uint8Array<ArrayBuffer>;
|
|
77
92
|
declare function markdownToXlsx(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions): Uint8Array<ArrayBuffer>;
|
|
93
|
+
declare function csvToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
|
|
94
|
+
declare function markdownToCsv(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
|
|
78
95
|
interface OdmToPdfOptions extends DocumentToPdfOptions {
|
|
79
96
|
readonly resolveSubDocument?: (href: string) => Uint8Array<ArrayBuffer> | undefined;
|
|
80
97
|
}
|
|
@@ -103,4 +120,4 @@ interface OdbReportToOdtOptions {
|
|
|
103
120
|
declare function odbReportToOdt(content: ContentDocument, options?: OdbReportToOdtOptions): Uint8Array<ArrayBuffer>;
|
|
104
121
|
declare function odbReportToPdf(content: ContentDocument, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
|
|
105
122
|
//#endregion
|
|
106
|
-
export { ComposedDocumentOptions, DocumentBridgeOptions, DocumentToPdfOptions, OdbConversionOptions, OdbReportToDocxOptions, OdbReportToOdtOptions, OdbToCsvOptions, OdmToPdfOptions, OdmUnresolvedSectionError, PdfToDocumentOptions, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, inlineOdmSectionToContentSection, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToXlsx, pptxToDocx, pptxToOdp, pptxToPdf, xlsxToMarkdown, xlsxToOds, xlsxToPdf };
|
|
123
|
+
export { ComposedDocumentOptions, CsvReadOptions, CsvWriteOptions, DocumentBridgeOptions, DocumentToPdfOptions, OdbConversionOptions, OdbReportToDocxOptions, OdbReportToOdtOptions, OdbToCsvOptions, OdmToPdfOptions, OdmUnresolvedSectionError, PdfToDocumentOptions, csvToMarkdown, csvToOds, csvToPdf, csvToXlsx, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, inlineOdmSectionToContentSection, markdownToCsv, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToCsv, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToXlsx, pptxToDocx, pptxToOdp, pptxToPdf, xlsxToCsv, xlsxToMarkdown, xlsxToOds, xlsxToPdf };
|
package/dist/convert/convert.js
CHANGED
|
@@ -39,6 +39,9 @@ function odgToPdf(bytes, options) {
|
|
|
39
39
|
function markdownToPdf(bytes, options) {
|
|
40
40
|
return convertDocument("markdown", "pdf", bytes, options);
|
|
41
41
|
}
|
|
42
|
+
function csvToPdf(bytes, options) {
|
|
43
|
+
return convertDocument("csv", "pdf", bytes, options);
|
|
44
|
+
}
|
|
42
45
|
const STANDALONE_FORMULA_SIZE_PT = 18;
|
|
43
46
|
const STANDALONE_FORMULA_MARGIN_PT = 72;
|
|
44
47
|
function odfToPdf(bytes, options) {
|
|
@@ -112,6 +115,9 @@ function pdfToOds(bytes, options) {
|
|
|
112
115
|
function pdfToMarkdown(bytes, options) {
|
|
113
116
|
return convertDocument("pdf", "markdown", bytes, options);
|
|
114
117
|
}
|
|
118
|
+
function pdfToCsv(bytes, options) {
|
|
119
|
+
return convertDocument("pdf", "csv", bytes, options);
|
|
120
|
+
}
|
|
115
121
|
function odtToDocx(bytes, options) {
|
|
116
122
|
return convertDocument("odt", "docx", bytes, options);
|
|
117
123
|
}
|
|
@@ -142,6 +148,18 @@ function markdownToOdt(bytes, options) {
|
|
|
142
148
|
function odtToMarkdown(bytes, options) {
|
|
143
149
|
return convertDocument("odt", "markdown", bytes, options);
|
|
144
150
|
}
|
|
151
|
+
function csvToXlsx(bytes, options) {
|
|
152
|
+
return convertDocument("csv", "xlsx", bytes, options);
|
|
153
|
+
}
|
|
154
|
+
function xlsxToCsv(bytes, options) {
|
|
155
|
+
return convertDocument("xlsx", "csv", bytes, options);
|
|
156
|
+
}
|
|
157
|
+
function csvToOds(bytes, options) {
|
|
158
|
+
return convertDocument("csv", "ods", bytes, options);
|
|
159
|
+
}
|
|
160
|
+
function odsToCsv(bytes, options) {
|
|
161
|
+
return convertDocument("ods", "csv", bytes, options);
|
|
162
|
+
}
|
|
145
163
|
function docxToPptx(bytes, options) {
|
|
146
164
|
return convertDocument("docx", "pptx", bytes, options);
|
|
147
165
|
}
|
|
@@ -166,6 +184,12 @@ function xlsxToMarkdown(bytes, options) {
|
|
|
166
184
|
function markdownToXlsx(bytes, options) {
|
|
167
185
|
return convertDocument("markdown", "xlsx", bytes, options);
|
|
168
186
|
}
|
|
187
|
+
function csvToMarkdown(bytes, options) {
|
|
188
|
+
return convertDocument("csv", "markdown", bytes, options);
|
|
189
|
+
}
|
|
190
|
+
function markdownToCsv(bytes, options) {
|
|
191
|
+
return convertDocument("markdown", "csv", bytes, options);
|
|
192
|
+
}
|
|
169
193
|
var OdmUnresolvedSectionError = class extends Error {
|
|
170
194
|
hrefs;
|
|
171
195
|
constructor(hrefs) {
|
|
@@ -310,4 +334,4 @@ function odbReportToPdf(content, options) {
|
|
|
310
334
|
});
|
|
311
335
|
}
|
|
312
336
|
//#endregion
|
|
313
|
-
export { OdmUnresolvedSectionError, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, inlineOdmSectionToContentSection, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToXlsx, pptxToDocx, pptxToOdp, pptxToPdf, xlsxToMarkdown, xlsxToOds, xlsxToPdf };
|
|
337
|
+
export { OdmUnresolvedSectionError, csvToMarkdown, csvToOds, csvToPdf, csvToXlsx, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, inlineOdmSectionToContentSection, markdownToCsv, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToCsv, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToXlsx, pptxToDocx, pptxToOdp, pptxToPdf, xlsxToCsv, xlsxToMarkdown, xlsxToOds, xlsxToPdf };
|
package/dist/convert/local.cjs
CHANGED
|
@@ -83,6 +83,8 @@ function createLocalDocumentConverter() {
|
|
|
83
83
|
onSubstitution: (s, c) => diagnostics.push(substitutionDiagnostic(s, c)),
|
|
84
84
|
sink: (d) => diagnostics.push(fromPdfDiagnostic(d)),
|
|
85
85
|
images: options.images,
|
|
86
|
+
delimiter: options.delimiter,
|
|
87
|
+
sheet: options.sheet,
|
|
86
88
|
clock: options.clock,
|
|
87
89
|
onDocument
|
|
88
90
|
});
|
package/dist/convert/local.js
CHANGED
|
@@ -82,6 +82,8 @@ function createLocalDocumentConverter() {
|
|
|
82
82
|
onSubstitution: (s, c) => diagnostics.push(substitutionDiagnostic(s, c)),
|
|
83
83
|
sink: (d) => diagnostics.push(fromPdfDiagnostic(d)),
|
|
84
84
|
images: options.images,
|
|
85
|
+
delimiter: options.delimiter,
|
|
86
|
+
sheet: options.sheet,
|
|
85
87
|
clock: options.clock,
|
|
86
88
|
onDocument
|
|
87
89
|
});
|
package/dist/convert/port.cjs
CHANGED
package/dist/convert/port.d.cts
CHANGED
|
@@ -12,6 +12,7 @@ declare const DocumentFormatSchema: z.ZodEnum<{
|
|
|
12
12
|
ods: "ods";
|
|
13
13
|
odg: "odg";
|
|
14
14
|
odf: "odf";
|
|
15
|
+
csv: "csv";
|
|
15
16
|
markdown: "markdown";
|
|
16
17
|
pdf: "pdf";
|
|
17
18
|
}>;
|
|
@@ -41,6 +42,8 @@ interface ConversionOptions {
|
|
|
41
42
|
readonly fonts?: readonly ProvidedFont[];
|
|
42
43
|
readonly onFontSubstitution?: (substitution: FontSubstitution) => void;
|
|
43
44
|
readonly images?: MarkdownImageResolver;
|
|
45
|
+
readonly delimiter?: string;
|
|
46
|
+
readonly sheet?: string;
|
|
44
47
|
readonly clock?: ClockPort;
|
|
45
48
|
}
|
|
46
49
|
interface DocumentConverter {
|
package/dist/convert/port.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ declare const DocumentFormatSchema: z.ZodEnum<{
|
|
|
12
12
|
ods: "ods";
|
|
13
13
|
odg: "odg";
|
|
14
14
|
odf: "odf";
|
|
15
|
+
csv: "csv";
|
|
15
16
|
markdown: "markdown";
|
|
16
17
|
pdf: "pdf";
|
|
17
18
|
}>;
|
|
@@ -41,6 +42,8 @@ interface ConversionOptions {
|
|
|
41
42
|
readonly fonts?: readonly ProvidedFont[];
|
|
42
43
|
readonly onFontSubstitution?: (substitution: FontSubstitution) => void;
|
|
43
44
|
readonly images?: MarkdownImageResolver;
|
|
45
|
+
readonly delimiter?: string;
|
|
46
|
+
readonly sheet?: string;
|
|
44
47
|
readonly clock?: ClockPort;
|
|
45
48
|
}
|
|
46
49
|
interface DocumentConverter {
|
package/dist/convert/port.js
CHANGED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_layout_cell_typing = require("../layout/cell-typing.cjs");
|
|
3
|
+
const require_csv_records = require("./records.cjs");
|
|
4
|
+
let document_schema_js = require("document-schema.js");
|
|
5
|
+
//#region src/csv/read.ts
|
|
6
|
+
const HEADER_ROW_INDEX = 0;
|
|
7
|
+
const SHEET_NAME = "Sheet1";
|
|
8
|
+
const COLUMN_WIDTH_PT = 64;
|
|
9
|
+
const ROW_HEIGHT_PT = 15;
|
|
10
|
+
const MARGIN_PT = 56.69291338582677;
|
|
11
|
+
const DEFAULT_PRINT_SETTINGS = {
|
|
12
|
+
pageSize: document_schema_js.PAGE_SIZE_A4,
|
|
13
|
+
margins: {
|
|
14
|
+
topPt: MARGIN_PT,
|
|
15
|
+
rightPt: MARGIN_PT,
|
|
16
|
+
bottomPt: MARGIN_PT,
|
|
17
|
+
leftPt: MARGIN_PT
|
|
18
|
+
},
|
|
19
|
+
gridlines: true,
|
|
20
|
+
headers: true,
|
|
21
|
+
pageOrder: "downThenOver"
|
|
22
|
+
};
|
|
23
|
+
function dataCell(rowIndex, columnIndex, field, onCellTypeInference) {
|
|
24
|
+
const inference = field === "" ? void 0 : require_layout_cell_typing.inferCellValue(field);
|
|
25
|
+
if (inference !== void 0) onCellTypeInference?.({
|
|
26
|
+
sheetIndex: 0,
|
|
27
|
+
row: rowIndex,
|
|
28
|
+
column: columnIndex,
|
|
29
|
+
displayText: field,
|
|
30
|
+
...inference
|
|
31
|
+
});
|
|
32
|
+
return {
|
|
33
|
+
row: rowIndex,
|
|
34
|
+
column: columnIndex,
|
|
35
|
+
value: field === "" ? { kind: "empty" } : inference?.outcome === "retyped" ? inference.value : {
|
|
36
|
+
kind: "string",
|
|
37
|
+
value: field
|
|
38
|
+
},
|
|
39
|
+
displayText: field
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function readCsvContent(text, options) {
|
|
43
|
+
const records = require_csv_records.parseCsvRecords(text, options?.delimiter ?? ",");
|
|
44
|
+
const onCellTypeInference = options?.onCellTypeInference;
|
|
45
|
+
const columnCount = records.reduce((max, record) => Math.max(max, record.length), 0);
|
|
46
|
+
const cells = [];
|
|
47
|
+
records.forEach((record, rowIndex) => {
|
|
48
|
+
for (let columnIndex = 0; columnIndex < columnCount; columnIndex++) {
|
|
49
|
+
const field = record[columnIndex] ?? "";
|
|
50
|
+
if (rowIndex === HEADER_ROW_INDEX) cells.push({
|
|
51
|
+
row: rowIndex,
|
|
52
|
+
column: columnIndex,
|
|
53
|
+
value: {
|
|
54
|
+
kind: "string",
|
|
55
|
+
value: field
|
|
56
|
+
},
|
|
57
|
+
displayText: field
|
|
58
|
+
});
|
|
59
|
+
else cells.push(dataCell(rowIndex, columnIndex, field, onCellTypeInference));
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
const columns = Array.from({ length: columnCount }, (_unused, index) => ({
|
|
63
|
+
index,
|
|
64
|
+
widthPt: COLUMN_WIDTH_PT
|
|
65
|
+
}));
|
|
66
|
+
const rows = Array.from({ length: records.length }, (_unused, index) => ({
|
|
67
|
+
index,
|
|
68
|
+
heightPt: ROW_HEIGHT_PT
|
|
69
|
+
}));
|
|
70
|
+
return {
|
|
71
|
+
kind: "spreadsheet",
|
|
72
|
+
formatVersion: document_schema_js.CONTENT_FORMAT_VERSION,
|
|
73
|
+
metadata: {},
|
|
74
|
+
sheets: [{
|
|
75
|
+
name: SHEET_NAME,
|
|
76
|
+
cells,
|
|
77
|
+
columns,
|
|
78
|
+
rows,
|
|
79
|
+
images: [],
|
|
80
|
+
printSettings: DEFAULT_PRINT_SETTINGS
|
|
81
|
+
}]
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//#endregion
|
|
85
|
+
exports.readCsvContent = readCsvContent;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CellTypeInferenceSink } from "../layout/cell-typing.cjs";
|
|
2
|
+
import { ContentDocument } from "document-schema.js";
|
|
3
|
+
//#region src/csv/read.d.ts
|
|
4
|
+
interface ReadCsvContentOptions {
|
|
5
|
+
readonly delimiter?: string;
|
|
6
|
+
readonly onCellTypeInference?: CellTypeInferenceSink;
|
|
7
|
+
}
|
|
8
|
+
declare function readCsvContent(text: string, options?: ReadCsvContentOptions): ContentDocument;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { ReadCsvContentOptions, readCsvContent };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CellTypeInferenceSink } from "../layout/cell-typing.js";
|
|
2
|
+
import { ContentDocument } from "document-schema.js";
|
|
3
|
+
//#region src/csv/read.d.ts
|
|
4
|
+
interface ReadCsvContentOptions {
|
|
5
|
+
readonly delimiter?: string;
|
|
6
|
+
readonly onCellTypeInference?: CellTypeInferenceSink;
|
|
7
|
+
}
|
|
8
|
+
declare function readCsvContent(text: string, options?: ReadCsvContentOptions): ContentDocument;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { ReadCsvContentOptions, readCsvContent };
|
package/dist/csv/read.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { inferCellValue } from "../layout/cell-typing.js";
|
|
2
|
+
import { parseCsvRecords } from "./records.js";
|
|
3
|
+
import { CONTENT_FORMAT_VERSION, PAGE_SIZE_A4 } from "document-schema.js";
|
|
4
|
+
//#region src/csv/read.ts
|
|
5
|
+
const HEADER_ROW_INDEX = 0;
|
|
6
|
+
const SHEET_NAME = "Sheet1";
|
|
7
|
+
const COLUMN_WIDTH_PT = 64;
|
|
8
|
+
const ROW_HEIGHT_PT = 15;
|
|
9
|
+
const MARGIN_PT = 56.69291338582677;
|
|
10
|
+
const DEFAULT_PRINT_SETTINGS = {
|
|
11
|
+
pageSize: PAGE_SIZE_A4,
|
|
12
|
+
margins: {
|
|
13
|
+
topPt: MARGIN_PT,
|
|
14
|
+
rightPt: MARGIN_PT,
|
|
15
|
+
bottomPt: MARGIN_PT,
|
|
16
|
+
leftPt: MARGIN_PT
|
|
17
|
+
},
|
|
18
|
+
gridlines: true,
|
|
19
|
+
headers: true,
|
|
20
|
+
pageOrder: "downThenOver"
|
|
21
|
+
};
|
|
22
|
+
function dataCell(rowIndex, columnIndex, field, onCellTypeInference) {
|
|
23
|
+
const inference = field === "" ? void 0 : inferCellValue(field);
|
|
24
|
+
if (inference !== void 0) onCellTypeInference?.({
|
|
25
|
+
sheetIndex: 0,
|
|
26
|
+
row: rowIndex,
|
|
27
|
+
column: columnIndex,
|
|
28
|
+
displayText: field,
|
|
29
|
+
...inference
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
row: rowIndex,
|
|
33
|
+
column: columnIndex,
|
|
34
|
+
value: field === "" ? { kind: "empty" } : inference?.outcome === "retyped" ? inference.value : {
|
|
35
|
+
kind: "string",
|
|
36
|
+
value: field
|
|
37
|
+
},
|
|
38
|
+
displayText: field
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function readCsvContent(text, options) {
|
|
42
|
+
const records = parseCsvRecords(text, options?.delimiter ?? ",");
|
|
43
|
+
const onCellTypeInference = options?.onCellTypeInference;
|
|
44
|
+
const columnCount = records.reduce((max, record) => Math.max(max, record.length), 0);
|
|
45
|
+
const cells = [];
|
|
46
|
+
records.forEach((record, rowIndex) => {
|
|
47
|
+
for (let columnIndex = 0; columnIndex < columnCount; columnIndex++) {
|
|
48
|
+
const field = record[columnIndex] ?? "";
|
|
49
|
+
if (rowIndex === HEADER_ROW_INDEX) cells.push({
|
|
50
|
+
row: rowIndex,
|
|
51
|
+
column: columnIndex,
|
|
52
|
+
value: {
|
|
53
|
+
kind: "string",
|
|
54
|
+
value: field
|
|
55
|
+
},
|
|
56
|
+
displayText: field
|
|
57
|
+
});
|
|
58
|
+
else cells.push(dataCell(rowIndex, columnIndex, field, onCellTypeInference));
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
const columns = Array.from({ length: columnCount }, (_unused, index) => ({
|
|
62
|
+
index,
|
|
63
|
+
widthPt: COLUMN_WIDTH_PT
|
|
64
|
+
}));
|
|
65
|
+
const rows = Array.from({ length: records.length }, (_unused, index) => ({
|
|
66
|
+
index,
|
|
67
|
+
heightPt: ROW_HEIGHT_PT
|
|
68
|
+
}));
|
|
69
|
+
return {
|
|
70
|
+
kind: "spreadsheet",
|
|
71
|
+
formatVersion: CONTENT_FORMAT_VERSION,
|
|
72
|
+
metadata: {},
|
|
73
|
+
sheets: [{
|
|
74
|
+
name: SHEET_NAME,
|
|
75
|
+
cells,
|
|
76
|
+
columns,
|
|
77
|
+
rows,
|
|
78
|
+
images: [],
|
|
79
|
+
printSettings: DEFAULT_PRINT_SETTINGS
|
|
80
|
+
}]
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//#endregion
|
|
84
|
+
export { readCsvContent };
|