odf.js 6.3.0 → 6.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.
- package/README.md +172 -18
- package/dist/{codec-BnzBd5_I.d.cts → codec-CFdlbFLJ.d.cts} +16 -10
- package/dist/{codec-Dg_HWuH1.d.ts → codec-DTAgph2r.d.ts} +16 -10
- package/dist/codec.d.cts +1 -1
- package/dist/codec.d.ts +1 -1
- package/dist/{embedded-BONPxvS3.js → embedded-BnavfkP-.js} +3 -3
- package/dist/{embedded-wrtHCJ68.cjs → embedded-Bxyss_ck.cjs} +14 -2
- package/dist/image/sniff.cjs +26 -0
- package/dist/image/sniff.d.cts +1 -1
- package/dist/image/sniff.d.ts +1 -1
- package/dist/image/sniff.js +26 -0
- package/dist/index.cjs +34 -1
- package/dist/index.d.cts +20 -14
- package/dist/index.d.ts +20 -14
- package/dist/index.js +12 -6
- package/dist/{list-vhXd0Jf6.d.ts → list-7FO0SDqZ.d.ts} +14 -1
- package/dist/{list-Bttwr1mk.d.cts → list-BorrTJBY.d.cts} +14 -1
- package/dist/manifest.cjs +2 -0
- package/dist/manifest.js +2 -0
- package/dist/{ns-C14w-Zhf.d.cts → ns-DrleaIZQ.d.cts} +3 -1
- package/dist/{ns-CTyKJZeF.d.ts → ns-E0TfX9tZ.d.ts} +3 -1
- package/dist/ooo1/ns.cjs +9 -0
- package/dist/ooo1/ns.d.cts +2 -2
- package/dist/ooo1/ns.d.ts +2 -2
- package/dist/ooo1/ns.js +8 -1
- package/dist/ooo1/properties.cjs +30 -0
- package/dist/ooo1/properties.d.cts +6 -2
- package/dist/ooo1/properties.d.ts +6 -2
- package/dist/ooo1/properties.js +30 -1
- package/dist/ooo1/read.cjs +1 -1
- package/dist/ooo1/read.d.cts +1 -1
- package/dist/ooo1/read.d.ts +1 -1
- package/dist/ooo1/read.js +1 -1
- package/dist/ooo1/transform.cjs +290 -0
- package/dist/ooo1/transform.d.cts +2 -2
- package/dist/ooo1/transform.d.ts +2 -2
- package/dist/ooo1/transform.js +293 -4
- package/dist/ooo1/write.cjs +40 -0
- package/dist/ooo1/write.d.cts +2 -0
- package/dist/ooo1/write.d.ts +2 -0
- package/dist/ooo1/write.js +32 -0
- package/dist/package-io/scaffold.cjs +2 -1
- package/dist/package-io/scaffold.js +2 -1
- package/dist/{paragraph-BdwsQisB.d.cts → paragraph-Bf6Iq5wC.d.cts} +1 -1
- package/dist/{paragraph-BoVy1LrN.d.ts → paragraph-DtC86tft.d.ts} +1 -1
- package/dist/{path-CK0dIPgx.d.cts → path-8HQS-J7y.d.cts} +3 -1
- package/dist/{path-CK0dIPgx.d.ts → path-8HQS-J7y.d.ts} +3 -1
- package/dist/{read-Bo1GBjSE.d.ts → read-A3CJkqVM.d.ts} +3 -1
- package/dist/{read-RFqq4ckj.d.cts → read-BgnLFuSi.d.cts} +1 -1
- package/dist/{read-3yy5EFV_.d.ts → read-CqaZ01kU.d.ts} +1 -1
- package/dist/{read-tpfiT_n4.d.cts → read-fphkvCpR.d.cts} +3 -1
- package/dist/{shapes-DUzrrf7b.d.ts → shapes-B6Ms7ibr.d.ts} +1 -1
- package/dist/{shapes-BQhXAk0D.d.cts → shapes-CbBc9t0y.d.cts} +1 -1
- package/dist/{sniff-DGOBHA0O.d.cts → sniff-eR8lObzF.d.cts} +1 -1
- package/dist/{sniff-DGOBHA0O.d.ts → sniff-eR8lObzF.d.ts} +1 -1
- package/dist/{table-ByhqRnSG.d.cts → table-CECMtPxZ.d.cts} +6 -2
- package/dist/{table-DElqGcT0.d.ts → table-XuniPr2I.d.ts} +6 -2
- package/dist/{transform-SDysw9wx.d.cts → transform-DFCPKX7e.d.cts} +2 -1
- package/dist/{transform-DRr76JEu.d.ts → transform-DPliWQuD.d.ts} +2 -1
- package/dist/typed/draw/embedded.cjs +1 -1
- package/dist/typed/draw/embedded.js +1 -1
- package/dist/typed/draw/shapes.cjs +7 -2
- package/dist/typed/draw/shapes.d.cts +1 -1
- package/dist/typed/draw/shapes.d.ts +1 -1
- package/dist/typed/draw/shapes.js +7 -2
- package/dist/typed/draw/write-shapes.cjs +211 -0
- package/dist/typed/draw/write-shapes.d.cts +2 -0
- package/dist/typed/draw/write-shapes.d.ts +2 -0
- package/dist/typed/draw/write-shapes.js +204 -0
- package/dist/typed/draw/write-vectors.cjs +132 -0
- package/dist/typed/draw/write-vectors.d.cts +2 -0
- package/dist/typed/draw/write-vectors.d.ts +2 -0
- package/dist/typed/draw/write-vectors.js +129 -0
- package/dist/typed/odb/form.cjs +1 -1
- package/dist/typed/odb/form.js +1 -1
- package/dist/typed/odg/write.cjs +80 -0
- package/dist/typed/odg/write.d.cts +2 -0
- package/dist/typed/odg/write.d.ts +2 -0
- package/dist/typed/odg/write.js +77 -0
- package/dist/typed/odp/write.cjs +108 -0
- package/dist/typed/odp/write.d.cts +2 -0
- package/dist/typed/odp/write.d.ts +2 -0
- package/dist/typed/odp/write.js +105 -0
- package/dist/typed/ods/read.cjs +3 -1
- package/dist/typed/ods/read.d.cts +2 -2
- package/dist/typed/ods/read.d.ts +2 -2
- package/dist/typed/ods/read.js +2 -2
- package/dist/typed/ods/write.cjs +579 -0
- package/dist/typed/ods/write.d.cts +2 -0
- package/dist/typed/ods/write.d.ts +2 -0
- package/dist/typed/ods/write.js +576 -0
- package/dist/typed/odt/read.cjs +1 -1
- package/dist/typed/odt/read.js +1 -1
- package/dist/typed/odt/write.cjs +11 -141
- package/dist/typed/odt/write.d.cts +1 -1
- package/dist/typed/odt/write.d.ts +1 -1
- package/dist/typed/odt/write.js +10 -140
- package/dist/typed/shared/canonicalise.cjs +126 -0
- package/dist/typed/shared/canonicalise.d.cts +10 -0
- package/dist/typed/shared/canonicalise.d.ts +10 -0
- package/dist/typed/shared/canonicalise.js +120 -0
- package/dist/typed/shared/image.cjs +12 -0
- package/dist/typed/shared/image.d.cts +5 -0
- package/dist/typed/shared/image.d.ts +5 -0
- package/dist/typed/shared/image.js +11 -0
- package/dist/typed/shared/list.cjs +32 -0
- package/dist/typed/shared/list.d.cts +2 -2
- package/dist/typed/shared/list.d.ts +2 -2
- package/dist/typed/shared/list.js +28 -1
- package/dist/typed/shared/paragraph.d.cts +1 -1
- package/dist/typed/shared/paragraph.d.ts +1 -1
- package/dist/typed/shared/path.cjs +19 -0
- package/dist/typed/shared/path.d.cts +2 -2
- package/dist/typed/shared/path.d.ts +2 -2
- package/dist/typed/shared/path.js +18 -1
- package/dist/typed/shared/table.cjs +3 -0
- package/dist/typed/shared/table.d.cts +2 -2
- package/dist/typed/shared/table.d.ts +2 -2
- package/dist/typed/shared/table.js +1 -1
- package/dist/typed/shared/units.cjs +16 -1
- package/dist/typed/shared/units.d.cts +2 -2
- package/dist/typed/shared/units.d.ts +2 -2
- package/dist/typed/shared/units.js +16 -2
- package/dist/{units-BQSNkTQZ.d.cts → units-DdyaQolR.d.cts} +2 -1
- package/dist/{units-BQSNkTQZ.d.ts → units-DdyaQolR.d.ts} +2 -1
- package/dist/write-4kMi-asu.d.ts +14 -0
- package/dist/write-BZXpT8F6.d.cts +17 -0
- package/dist/write-BhG3t3fJ.d.cts +14 -0
- package/dist/write-BuLQmwLD.d.cts +14 -0
- package/dist/write-C2c4xBXs.d.cts +14 -0
- package/dist/{write-7Uu_wlkL.d.cts → write-CPATqG4v.d.cts} +1 -0
- package/dist/write-CfTE2jY8.d.ts +14 -0
- package/dist/write-DttX1rTC.d.ts +14 -0
- package/dist/{write-DGcI9W7Z.d.ts → write-JERychL3.d.ts} +1 -0
- package/dist/write-SKnCTU4C.d.ts +17 -0
- package/dist/write-shapes-Co7BrmMZ.d.ts +36 -0
- package/dist/write-shapes-D4piGKf4.d.cts +36 -0
- package/dist/write-vectors-B-RVHAKI.d.cts +11 -0
- package/dist/write-vectors-CYjZoVBW.d.ts +11 -0
- package/package.json +2 -2
package/dist/typed/odt/write.cjs
CHANGED
|
@@ -10,21 +10,13 @@ const require_typed_shared_list = require("../shared/list.cjs");
|
|
|
10
10
|
const require_typed_shared_paragraph = require("../shared/paragraph.cjs");
|
|
11
11
|
const require_typed_shared_table = require("../shared/table.cjs");
|
|
12
12
|
const require_package_io_scaffold = require("../../package-io/scaffold.cjs");
|
|
13
|
+
const require_typed_shared_image = require("../shared/image.cjs");
|
|
14
|
+
const require_typed_shared_canonicalise = require("../shared/canonicalise.cjs");
|
|
13
15
|
let document_schema_js = require("document-schema.js");
|
|
14
16
|
//#region src/typed/odt/write.ts
|
|
15
17
|
const CONTENT_PART = "content.xml";
|
|
16
18
|
const STYLES_PART = "styles.xml";
|
|
17
19
|
const PICTURES_DIRECTORY = "Pictures";
|
|
18
|
-
function listKindOf(numId) {
|
|
19
|
-
if (numId === void 0) return;
|
|
20
|
-
if (numId.startsWith("ordered:")) return "ordered";
|
|
21
|
-
return numId.startsWith("bullet:") ? "bullet" : void 0;
|
|
22
|
-
}
|
|
23
|
-
const NO_NUM_ID_KEY = " ";
|
|
24
|
-
function canonicalNumId(incoming, ordinal) {
|
|
25
|
-
const kind = listKindOf(incoming);
|
|
26
|
-
return kind === void 0 ? `list${ordinal}` : `${kind}:list${ordinal}`;
|
|
27
|
-
}
|
|
28
20
|
function unsupported(what, where) {
|
|
29
21
|
return /* @__PURE__ */ new Error(`writeOdt: ${where} carries ${what}, which this writer does not write yet -- refusing rather than producing an .odt that silently lost it. See ExaDev/documents.js for the tracked follow-up covering the fidelity constructs and embedded objects.`);
|
|
30
22
|
}
|
|
@@ -36,44 +28,6 @@ function assertWritableBlock(block) {
|
|
|
36
28
|
if (block.kind === "embeddedObject") throw unsupported("an embedded object", "a section's block flow");
|
|
37
29
|
if (block.kind === "paragraph") assertWritableParagraph(block);
|
|
38
30
|
}
|
|
39
|
-
function canonicalColor(color) {
|
|
40
|
-
return (0, document_schema_js.rgbHexToColor)((0, document_schema_js.colorToRgbHex)(color));
|
|
41
|
-
}
|
|
42
|
-
function canonicalRun(run) {
|
|
43
|
-
const canonical = { text: run.text };
|
|
44
|
-
if (run.bold !== void 0) canonical.bold = run.bold;
|
|
45
|
-
if (run.italic !== void 0) canonical.italic = run.italic;
|
|
46
|
-
if (run.underline !== void 0) canonical.underline = run.underline;
|
|
47
|
-
if (run.strike !== void 0) canonical.strike = run.strike;
|
|
48
|
-
if (run.fontFamily !== void 0) canonical.fontFamily = run.fontFamily;
|
|
49
|
-
if (run.sizePt !== void 0) canonical.sizePt = run.sizePt;
|
|
50
|
-
if (run.color !== void 0) canonical.color = canonicalColor(run.color);
|
|
51
|
-
if (run.hyperlink !== void 0) canonical.hyperlink = run.hyperlink;
|
|
52
|
-
return canonical;
|
|
53
|
-
}
|
|
54
|
-
function canonicalParagraph(paragraph, listNumId) {
|
|
55
|
-
const canonical = {
|
|
56
|
-
kind: "paragraph",
|
|
57
|
-
runs: require_typed_shared_paragraph.segmentOdfParagraphRuns(paragraph.runs).map(canonicalRun)
|
|
58
|
-
};
|
|
59
|
-
if (paragraph.headingLevel !== void 0) {
|
|
60
|
-
canonical.headingLevel = paragraph.headingLevel;
|
|
61
|
-
canonical.styleId = `Heading${paragraph.headingLevel}`;
|
|
62
|
-
}
|
|
63
|
-
if (paragraph.alignment !== void 0) canonical.alignment = paragraph.alignment;
|
|
64
|
-
if (listNumId !== void 0 && paragraph.list !== void 0) canonical.list = {
|
|
65
|
-
numId: listNumId,
|
|
66
|
-
level: paragraph.list.level
|
|
67
|
-
};
|
|
68
|
-
if (paragraph.spacingBeforePt !== void 0) canonical.spacingBeforePt = paragraph.spacingBeforePt;
|
|
69
|
-
if (paragraph.spacingAfterPt !== void 0) canonical.spacingAfterPt = paragraph.spacingAfterPt;
|
|
70
|
-
if (paragraph.lineSpacing !== void 0) canonical.lineSpacing = paragraph.lineSpacing;
|
|
71
|
-
if (paragraph.indentLeftPt !== void 0) canonical.indentLeftPt = paragraph.indentLeftPt;
|
|
72
|
-
if (paragraph.indentFirstLinePt !== void 0) canonical.indentFirstLinePt = paragraph.indentFirstLinePt;
|
|
73
|
-
if (paragraph.pageBreakBefore !== void 0) canonical.pageBreakBefore = paragraph.pageBreakBefore;
|
|
74
|
-
if (paragraph.pageBreakAfter !== void 0) canonical.pageBreakAfter = paragraph.pageBreakAfter;
|
|
75
|
-
return canonical;
|
|
76
|
-
}
|
|
77
31
|
function emptyAnchorParagraph(pageBreakBefore) {
|
|
78
32
|
return pageBreakBefore ? {
|
|
79
33
|
kind: "paragraph",
|
|
@@ -98,8 +52,7 @@ function planSection(section, needsLeadingParagraph, listState) {
|
|
|
98
52
|
return false;
|
|
99
53
|
};
|
|
100
54
|
const closeListRun = () => {
|
|
101
|
-
listState
|
|
102
|
-
listState.openCanonicalNumId = void 0;
|
|
55
|
+
require_typed_shared_list.closeListPlan(listState);
|
|
103
56
|
};
|
|
104
57
|
const flushPendingPageBreak = () => {
|
|
105
58
|
if (pendingPageBreak) {
|
|
@@ -119,17 +72,8 @@ function planSection(section, needsLeadingParagraph, listState) {
|
|
|
119
72
|
continue;
|
|
120
73
|
}
|
|
121
74
|
if (block.kind === "paragraph") {
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
else {
|
|
125
|
-
const incomingKey = membership.numId ?? NO_NUM_ID_KEY;
|
|
126
|
-
if (listState.openNumId !== incomingKey) {
|
|
127
|
-
listState.openNumId = incomingKey;
|
|
128
|
-
listState.openCanonicalNumId = canonicalNumId(membership.numId, listState.next);
|
|
129
|
-
listState.next += 1;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
const paragraph = canonicalParagraph(block, membership === void 0 ? void 0 : listState.openCanonicalNumId);
|
|
75
|
+
const canonicalId = require_typed_shared_list.planListMembership(block.list, listState);
|
|
76
|
+
const paragraph = require_typed_shared_canonicalise.canonicalParagraph(block, canonicalId);
|
|
133
77
|
pushParagraph(pendingPageBreak ? {
|
|
134
78
|
...paragraph,
|
|
135
79
|
pageBreakBefore: true
|
|
@@ -165,92 +109,18 @@ function planDocument(sections) {
|
|
|
165
109
|
const listState = { next: 1 };
|
|
166
110
|
return sections.map((section, index) => planSection(section, index > 0, listState));
|
|
167
111
|
}
|
|
168
|
-
function canonicalCell(cell, covered) {
|
|
169
|
-
if (covered) return { blocks: [] };
|
|
170
|
-
const canonical = { blocks: cell.blocks.map((block) => {
|
|
171
|
-
if (block.kind !== "paragraph") throw unsupported(`a "${block.kind}" block`, "a table cell");
|
|
172
|
-
assertWritableParagraph(block);
|
|
173
|
-
return canonicalParagraph(block, void 0);
|
|
174
|
-
}) };
|
|
175
|
-
if (cell.colSpan !== void 0) canonical.colSpan = cell.colSpan;
|
|
176
|
-
if (cell.rowSpan !== void 0) canonical.rowSpan = cell.rowSpan;
|
|
177
|
-
if (cell.background !== void 0) canonical.background = canonicalColor(cell.background);
|
|
178
|
-
if (cell.borders !== void 0) {
|
|
179
|
-
const borders = {};
|
|
180
|
-
for (const edge of [
|
|
181
|
-
"left",
|
|
182
|
-
"right",
|
|
183
|
-
"top",
|
|
184
|
-
"bottom"
|
|
185
|
-
]) {
|
|
186
|
-
const border = cell.borders[edge];
|
|
187
|
-
if (border !== void 0) borders[edge] = {
|
|
188
|
-
color: canonicalColor(border.color),
|
|
189
|
-
widthPt: border.widthPt,
|
|
190
|
-
style: border.style ?? "solid"
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
canonical.borders = borders;
|
|
194
|
-
}
|
|
195
|
-
return canonical;
|
|
196
|
-
}
|
|
197
|
-
function canonicalTable(table) {
|
|
198
|
-
const covered = /* @__PURE__ */ new Set();
|
|
199
|
-
return {
|
|
200
|
-
kind: "table",
|
|
201
|
-
columnWidthsPt: [...table.columnWidthsPt],
|
|
202
|
-
rows: table.rows.map((row, rowIndex) => {
|
|
203
|
-
const cells = row.cells.map((cell, columnIndex) => {
|
|
204
|
-
const key = `${rowIndex},${columnIndex}`;
|
|
205
|
-
const isCovered = covered.has(key);
|
|
206
|
-
if (!isCovered) {
|
|
207
|
-
const colSpan = cell.colSpan ?? 1;
|
|
208
|
-
const rowSpan = cell.rowSpan ?? 1;
|
|
209
|
-
for (let r = rowIndex; r < rowIndex + rowSpan; r += 1) for (let c = columnIndex; c < columnIndex + colSpan; c += 1) if (r !== rowIndex || c !== columnIndex) covered.add(`${r},${c}`);
|
|
210
|
-
}
|
|
211
|
-
return canonicalCell(cell, isCovered);
|
|
212
|
-
});
|
|
213
|
-
return row.heightPt === void 0 ? { cells } : {
|
|
214
|
-
cells,
|
|
215
|
-
heightPt: row.heightPt
|
|
216
|
-
};
|
|
217
|
-
})
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
function canonicalImage(image) {
|
|
221
|
-
const canonical = {
|
|
222
|
-
kind: "image",
|
|
223
|
-
format: image.format,
|
|
224
|
-
base64: image.base64,
|
|
225
|
-
widthPt: image.widthPt,
|
|
226
|
-
heightPt: image.heightPt
|
|
227
|
-
};
|
|
228
|
-
if (image.altText !== void 0) canonical.altText = image.altText;
|
|
229
|
-
return canonical;
|
|
230
|
-
}
|
|
231
|
-
function canonicalMetadata(metadata) {
|
|
232
|
-
const canonical = {};
|
|
233
|
-
if (metadata.title !== void 0) canonical.title = metadata.title;
|
|
234
|
-
if (metadata.author !== void 0) canonical.author = metadata.author;
|
|
235
|
-
if (metadata.subject !== void 0) canonical.subject = metadata.subject;
|
|
236
|
-
if (metadata.keywords !== void 0 && metadata.keywords.length > 0) canonical.keywords = [...metadata.keywords];
|
|
237
|
-
if (metadata.creator !== void 0) canonical.creator = metadata.creator;
|
|
238
|
-
if (metadata.createdIso !== void 0) canonical.createdIso = metadata.createdIso;
|
|
239
|
-
if (metadata.modifiedIso !== void 0) canonical.modifiedIso = metadata.modifiedIso;
|
|
240
|
-
return canonical;
|
|
241
|
-
}
|
|
242
112
|
function normaliseOdtContent(document) {
|
|
243
113
|
if (document.kind !== "wordprocessing") throw new Error(`normaliseOdtContent: expected a 'wordprocessing' document, got '${document.kind}'`);
|
|
244
114
|
const planned = planDocument(document.sections);
|
|
245
115
|
return {
|
|
246
116
|
kind: "wordprocessing",
|
|
247
|
-
metadata: canonicalMetadata(document.metadata),
|
|
117
|
+
metadata: require_typed_shared_canonicalise.canonicalMetadata(document.metadata),
|
|
248
118
|
sections: planned.map((section, index) => {
|
|
249
119
|
const blocks = section.blocks.map((block) => {
|
|
250
120
|
switch (block.kind) {
|
|
251
121
|
case "paragraph": return block.paragraph;
|
|
252
|
-
case "table": return canonicalTable(block.table);
|
|
253
|
-
case "image": return canonicalImage(block.image);
|
|
122
|
+
case "table": return require_typed_shared_canonicalise.canonicalTable(block.table);
|
|
123
|
+
case "image": return require_typed_shared_canonicalise.canonicalImage(block.image);
|
|
254
124
|
}
|
|
255
125
|
});
|
|
256
126
|
return index === 0 ? {
|
|
@@ -294,7 +164,7 @@ function listStyleNameFor(kind, state) {
|
|
|
294
164
|
return name;
|
|
295
165
|
}
|
|
296
166
|
function writeImageFrame(image, state) {
|
|
297
|
-
const extension = image.format
|
|
167
|
+
const extension = require_typed_shared_image.imageExtension(image.format);
|
|
298
168
|
const path = `${PICTURES_DIRECTORY}/image${state.nextImage}.${extension}`;
|
|
299
169
|
state.nextImage += 1;
|
|
300
170
|
state.pkg.parts[path] = {
|
|
@@ -319,7 +189,7 @@ function writeSectionBlocks(section, parentStyleName, state, out) {
|
|
|
319
189
|
let openList;
|
|
320
190
|
const closeList = () => {
|
|
321
191
|
if (openList === void 0) return;
|
|
322
|
-
const kind = listKindOf(openList.numId);
|
|
192
|
+
const kind = require_typed_shared_list.listKindOf(openList.numId);
|
|
323
193
|
const built = require_typed_shared_list.writeOdfList(openList.entries, kind === void 0 ? void 0 : listStyleNameFor(kind, state));
|
|
324
194
|
openList.element.attributes = built.attributes;
|
|
325
195
|
openList.element.children = built.children;
|
|
@@ -368,7 +238,7 @@ function writeOdtContent(document, options = {}) {
|
|
|
368
238
|
if (document.kind !== "wordprocessing") throw new Error(`writeOdtContent: expected a 'wordprocessing' document, got '${document.kind}' -- odf.js writes .odt from the wordprocessing arm only`);
|
|
369
239
|
const version = options.version ?? "1.3";
|
|
370
240
|
const textElement = require_xml_fragment.el("office:text");
|
|
371
|
-
const pkg = require_package_io_scaffold.createOdfPackage(require_media_type.ODF_MEDIA_TYPES.odt, textElement, version);
|
|
241
|
+
const pkg = require_package_io_scaffold.createOdfPackage(options.template ? require_media_type.ODF_MEDIA_TYPES.ott : require_media_type.ODF_MEDIA_TYPES.odt, textElement, version);
|
|
372
242
|
const state = {
|
|
373
243
|
pkg,
|
|
374
244
|
registry: require_styles_registry.StyleRegistry.forPart(pkg, CONTENT_PART, { otherPart: {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as writeOdtContent, n as normaliseOdtContent, r as writeOdt, t as OdtWriteOptions } from "../../write-
|
|
1
|
+
import { i as writeOdtContent, n as normaliseOdtContent, r as writeOdt, t as OdtWriteOptions } from "../../write-CPATqG4v.cjs";
|
|
2
2
|
export { OdtWriteOptions, normaliseOdtContent, writeOdt, writeOdtContent };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as writeOdtContent, n as normaliseOdtContent, r as writeOdt, t as OdtWriteOptions } from "../../write-
|
|
1
|
+
import { i as writeOdtContent, n as normaliseOdtContent, r as writeOdt, t as OdtWriteOptions } from "../../write-JERychL3.js";
|
|
2
2
|
export { OdtWriteOptions, normaliseOdtContent, writeOdt, writeOdtContent };
|
package/dist/typed/odt/write.js
CHANGED
|
@@ -5,25 +5,17 @@ import { syncManifest } from "../../manifest.js";
|
|
|
5
5
|
import { formatOdfLength } from "../shared/units.js";
|
|
6
6
|
import { StyleRegistry } from "../../styles/registry.js";
|
|
7
7
|
import { writeOdfMetadata } from "../shared/metadata.js";
|
|
8
|
-
import { buildOdfListStyle, writeOdfList } from "../shared/list.js";
|
|
9
|
-
import {
|
|
8
|
+
import { buildOdfListStyle, closeListPlan, listKindOf, planListMembership, writeOdfList } from "../shared/list.js";
|
|
9
|
+
import { writeOdfParagraph } from "../shared/paragraph.js";
|
|
10
10
|
import { writeOdfTable } from "../shared/table.js";
|
|
11
11
|
import { createOdfPackage, odfPartContainer } from "../../package-io/scaffold.js";
|
|
12
|
-
import {
|
|
12
|
+
import { imageExtension } from "../shared/image.js";
|
|
13
|
+
import { canonicalImage, canonicalMetadata, canonicalParagraph, canonicalTable } from "../shared/canonicalise.js";
|
|
14
|
+
import { flattenTree } from "document-schema.js";
|
|
13
15
|
//#region src/typed/odt/write.ts
|
|
14
16
|
const CONTENT_PART = "content.xml";
|
|
15
17
|
const STYLES_PART = "styles.xml";
|
|
16
18
|
const PICTURES_DIRECTORY = "Pictures";
|
|
17
|
-
function listKindOf(numId) {
|
|
18
|
-
if (numId === void 0) return;
|
|
19
|
-
if (numId.startsWith("ordered:")) return "ordered";
|
|
20
|
-
return numId.startsWith("bullet:") ? "bullet" : void 0;
|
|
21
|
-
}
|
|
22
|
-
const NO_NUM_ID_KEY = " ";
|
|
23
|
-
function canonicalNumId(incoming, ordinal) {
|
|
24
|
-
const kind = listKindOf(incoming);
|
|
25
|
-
return kind === void 0 ? `list${ordinal}` : `${kind}:list${ordinal}`;
|
|
26
|
-
}
|
|
27
19
|
function unsupported(what, where) {
|
|
28
20
|
return /* @__PURE__ */ new Error(`writeOdt: ${where} carries ${what}, which this writer does not write yet -- refusing rather than producing an .odt that silently lost it. See ExaDev/documents.js for the tracked follow-up covering the fidelity constructs and embedded objects.`);
|
|
29
21
|
}
|
|
@@ -35,44 +27,6 @@ function assertWritableBlock(block) {
|
|
|
35
27
|
if (block.kind === "embeddedObject") throw unsupported("an embedded object", "a section's block flow");
|
|
36
28
|
if (block.kind === "paragraph") assertWritableParagraph(block);
|
|
37
29
|
}
|
|
38
|
-
function canonicalColor(color) {
|
|
39
|
-
return rgbHexToColor(colorToRgbHex(color));
|
|
40
|
-
}
|
|
41
|
-
function canonicalRun(run) {
|
|
42
|
-
const canonical = { text: run.text };
|
|
43
|
-
if (run.bold !== void 0) canonical.bold = run.bold;
|
|
44
|
-
if (run.italic !== void 0) canonical.italic = run.italic;
|
|
45
|
-
if (run.underline !== void 0) canonical.underline = run.underline;
|
|
46
|
-
if (run.strike !== void 0) canonical.strike = run.strike;
|
|
47
|
-
if (run.fontFamily !== void 0) canonical.fontFamily = run.fontFamily;
|
|
48
|
-
if (run.sizePt !== void 0) canonical.sizePt = run.sizePt;
|
|
49
|
-
if (run.color !== void 0) canonical.color = canonicalColor(run.color);
|
|
50
|
-
if (run.hyperlink !== void 0) canonical.hyperlink = run.hyperlink;
|
|
51
|
-
return canonical;
|
|
52
|
-
}
|
|
53
|
-
function canonicalParagraph(paragraph, listNumId) {
|
|
54
|
-
const canonical = {
|
|
55
|
-
kind: "paragraph",
|
|
56
|
-
runs: segmentOdfParagraphRuns(paragraph.runs).map(canonicalRun)
|
|
57
|
-
};
|
|
58
|
-
if (paragraph.headingLevel !== void 0) {
|
|
59
|
-
canonical.headingLevel = paragraph.headingLevel;
|
|
60
|
-
canonical.styleId = `Heading${paragraph.headingLevel}`;
|
|
61
|
-
}
|
|
62
|
-
if (paragraph.alignment !== void 0) canonical.alignment = paragraph.alignment;
|
|
63
|
-
if (listNumId !== void 0 && paragraph.list !== void 0) canonical.list = {
|
|
64
|
-
numId: listNumId,
|
|
65
|
-
level: paragraph.list.level
|
|
66
|
-
};
|
|
67
|
-
if (paragraph.spacingBeforePt !== void 0) canonical.spacingBeforePt = paragraph.spacingBeforePt;
|
|
68
|
-
if (paragraph.spacingAfterPt !== void 0) canonical.spacingAfterPt = paragraph.spacingAfterPt;
|
|
69
|
-
if (paragraph.lineSpacing !== void 0) canonical.lineSpacing = paragraph.lineSpacing;
|
|
70
|
-
if (paragraph.indentLeftPt !== void 0) canonical.indentLeftPt = paragraph.indentLeftPt;
|
|
71
|
-
if (paragraph.indentFirstLinePt !== void 0) canonical.indentFirstLinePt = paragraph.indentFirstLinePt;
|
|
72
|
-
if (paragraph.pageBreakBefore !== void 0) canonical.pageBreakBefore = paragraph.pageBreakBefore;
|
|
73
|
-
if (paragraph.pageBreakAfter !== void 0) canonical.pageBreakAfter = paragraph.pageBreakAfter;
|
|
74
|
-
return canonical;
|
|
75
|
-
}
|
|
76
30
|
function emptyAnchorParagraph(pageBreakBefore) {
|
|
77
31
|
return pageBreakBefore ? {
|
|
78
32
|
kind: "paragraph",
|
|
@@ -97,8 +51,7 @@ function planSection(section, needsLeadingParagraph, listState) {
|
|
|
97
51
|
return false;
|
|
98
52
|
};
|
|
99
53
|
const closeListRun = () => {
|
|
100
|
-
listState
|
|
101
|
-
listState.openCanonicalNumId = void 0;
|
|
54
|
+
closeListPlan(listState);
|
|
102
55
|
};
|
|
103
56
|
const flushPendingPageBreak = () => {
|
|
104
57
|
if (pendingPageBreak) {
|
|
@@ -118,17 +71,8 @@ function planSection(section, needsLeadingParagraph, listState) {
|
|
|
118
71
|
continue;
|
|
119
72
|
}
|
|
120
73
|
if (block.kind === "paragraph") {
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
else {
|
|
124
|
-
const incomingKey = membership.numId ?? NO_NUM_ID_KEY;
|
|
125
|
-
if (listState.openNumId !== incomingKey) {
|
|
126
|
-
listState.openNumId = incomingKey;
|
|
127
|
-
listState.openCanonicalNumId = canonicalNumId(membership.numId, listState.next);
|
|
128
|
-
listState.next += 1;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
const paragraph = canonicalParagraph(block, membership === void 0 ? void 0 : listState.openCanonicalNumId);
|
|
74
|
+
const canonicalId = planListMembership(block.list, listState);
|
|
75
|
+
const paragraph = canonicalParagraph(block, canonicalId);
|
|
132
76
|
pushParagraph(pendingPageBreak ? {
|
|
133
77
|
...paragraph,
|
|
134
78
|
pageBreakBefore: true
|
|
@@ -164,80 +108,6 @@ function planDocument(sections) {
|
|
|
164
108
|
const listState = { next: 1 };
|
|
165
109
|
return sections.map((section, index) => planSection(section, index > 0, listState));
|
|
166
110
|
}
|
|
167
|
-
function canonicalCell(cell, covered) {
|
|
168
|
-
if (covered) return { blocks: [] };
|
|
169
|
-
const canonical = { blocks: cell.blocks.map((block) => {
|
|
170
|
-
if (block.kind !== "paragraph") throw unsupported(`a "${block.kind}" block`, "a table cell");
|
|
171
|
-
assertWritableParagraph(block);
|
|
172
|
-
return canonicalParagraph(block, void 0);
|
|
173
|
-
}) };
|
|
174
|
-
if (cell.colSpan !== void 0) canonical.colSpan = cell.colSpan;
|
|
175
|
-
if (cell.rowSpan !== void 0) canonical.rowSpan = cell.rowSpan;
|
|
176
|
-
if (cell.background !== void 0) canonical.background = canonicalColor(cell.background);
|
|
177
|
-
if (cell.borders !== void 0) {
|
|
178
|
-
const borders = {};
|
|
179
|
-
for (const edge of [
|
|
180
|
-
"left",
|
|
181
|
-
"right",
|
|
182
|
-
"top",
|
|
183
|
-
"bottom"
|
|
184
|
-
]) {
|
|
185
|
-
const border = cell.borders[edge];
|
|
186
|
-
if (border !== void 0) borders[edge] = {
|
|
187
|
-
color: canonicalColor(border.color),
|
|
188
|
-
widthPt: border.widthPt,
|
|
189
|
-
style: border.style ?? "solid"
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
canonical.borders = borders;
|
|
193
|
-
}
|
|
194
|
-
return canonical;
|
|
195
|
-
}
|
|
196
|
-
function canonicalTable(table) {
|
|
197
|
-
const covered = /* @__PURE__ */ new Set();
|
|
198
|
-
return {
|
|
199
|
-
kind: "table",
|
|
200
|
-
columnWidthsPt: [...table.columnWidthsPt],
|
|
201
|
-
rows: table.rows.map((row, rowIndex) => {
|
|
202
|
-
const cells = row.cells.map((cell, columnIndex) => {
|
|
203
|
-
const key = `${rowIndex},${columnIndex}`;
|
|
204
|
-
const isCovered = covered.has(key);
|
|
205
|
-
if (!isCovered) {
|
|
206
|
-
const colSpan = cell.colSpan ?? 1;
|
|
207
|
-
const rowSpan = cell.rowSpan ?? 1;
|
|
208
|
-
for (let r = rowIndex; r < rowIndex + rowSpan; r += 1) for (let c = columnIndex; c < columnIndex + colSpan; c += 1) if (r !== rowIndex || c !== columnIndex) covered.add(`${r},${c}`);
|
|
209
|
-
}
|
|
210
|
-
return canonicalCell(cell, isCovered);
|
|
211
|
-
});
|
|
212
|
-
return row.heightPt === void 0 ? { cells } : {
|
|
213
|
-
cells,
|
|
214
|
-
heightPt: row.heightPt
|
|
215
|
-
};
|
|
216
|
-
})
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
function canonicalImage(image) {
|
|
220
|
-
const canonical = {
|
|
221
|
-
kind: "image",
|
|
222
|
-
format: image.format,
|
|
223
|
-
base64: image.base64,
|
|
224
|
-
widthPt: image.widthPt,
|
|
225
|
-
heightPt: image.heightPt
|
|
226
|
-
};
|
|
227
|
-
if (image.altText !== void 0) canonical.altText = image.altText;
|
|
228
|
-
return canonical;
|
|
229
|
-
}
|
|
230
|
-
function canonicalMetadata(metadata) {
|
|
231
|
-
const canonical = {};
|
|
232
|
-
if (metadata.title !== void 0) canonical.title = metadata.title;
|
|
233
|
-
if (metadata.author !== void 0) canonical.author = metadata.author;
|
|
234
|
-
if (metadata.subject !== void 0) canonical.subject = metadata.subject;
|
|
235
|
-
if (metadata.keywords !== void 0 && metadata.keywords.length > 0) canonical.keywords = [...metadata.keywords];
|
|
236
|
-
if (metadata.creator !== void 0) canonical.creator = metadata.creator;
|
|
237
|
-
if (metadata.createdIso !== void 0) canonical.createdIso = metadata.createdIso;
|
|
238
|
-
if (metadata.modifiedIso !== void 0) canonical.modifiedIso = metadata.modifiedIso;
|
|
239
|
-
return canonical;
|
|
240
|
-
}
|
|
241
111
|
function normaliseOdtContent(document) {
|
|
242
112
|
if (document.kind !== "wordprocessing") throw new Error(`normaliseOdtContent: expected a 'wordprocessing' document, got '${document.kind}'`);
|
|
243
113
|
const planned = planDocument(document.sections);
|
|
@@ -293,7 +163,7 @@ function listStyleNameFor(kind, state) {
|
|
|
293
163
|
return name;
|
|
294
164
|
}
|
|
295
165
|
function writeImageFrame(image, state) {
|
|
296
|
-
const extension = image.format
|
|
166
|
+
const extension = imageExtension(image.format);
|
|
297
167
|
const path = `${PICTURES_DIRECTORY}/image${state.nextImage}.${extension}`;
|
|
298
168
|
state.nextImage += 1;
|
|
299
169
|
state.pkg.parts[path] = {
|
|
@@ -367,7 +237,7 @@ function writeOdtContent(document, options = {}) {
|
|
|
367
237
|
if (document.kind !== "wordprocessing") throw new Error(`writeOdtContent: expected a 'wordprocessing' document, got '${document.kind}' -- odf.js writes .odt from the wordprocessing arm only`);
|
|
368
238
|
const version = options.version ?? "1.3";
|
|
369
239
|
const textElement = el("office:text");
|
|
370
|
-
const pkg = createOdfPackage(ODF_MEDIA_TYPES.odt, textElement, version);
|
|
240
|
+
const pkg = createOdfPackage(options.template ? ODF_MEDIA_TYPES.ott : ODF_MEDIA_TYPES.odt, textElement, version);
|
|
371
241
|
const state = {
|
|
372
242
|
pkg,
|
|
373
243
|
registry: StyleRegistry.forPart(pkg, CONTENT_PART, { otherPart: {
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_typed_shared_paragraph = require("./paragraph.cjs");
|
|
3
|
+
let document_schema_js = require("document-schema.js");
|
|
4
|
+
//#region src/typed/shared/canonicalise.ts
|
|
5
|
+
function unsupportedContent(what, where) {
|
|
6
|
+
return /* @__PURE__ */ new Error(`${where} carries ${what}, which no ODF writer in this package can produce yet -- refusing to state a canonical form for content that would be silently lost on write. See ExaDev/documents.js for the tracked follow-up covering the fidelity constructs and embedded objects.`);
|
|
7
|
+
}
|
|
8
|
+
function canonicalColor(color) {
|
|
9
|
+
return (0, document_schema_js.rgbHexToColor)((0, document_schema_js.colorToRgbHex)(color));
|
|
10
|
+
}
|
|
11
|
+
function canonicalRun(run) {
|
|
12
|
+
const canonical = { text: run.text };
|
|
13
|
+
if (run.bold !== void 0) canonical.bold = run.bold;
|
|
14
|
+
if (run.italic !== void 0) canonical.italic = run.italic;
|
|
15
|
+
if (run.underline !== void 0) canonical.underline = run.underline;
|
|
16
|
+
if (run.strike !== void 0) canonical.strike = run.strike;
|
|
17
|
+
if (run.fontFamily !== void 0) canonical.fontFamily = run.fontFamily;
|
|
18
|
+
if (run.sizePt !== void 0) canonical.sizePt = run.sizePt;
|
|
19
|
+
if (run.color !== void 0) canonical.color = canonicalColor(run.color);
|
|
20
|
+
if (run.hyperlink !== void 0) canonical.hyperlink = run.hyperlink;
|
|
21
|
+
return canonical;
|
|
22
|
+
}
|
|
23
|
+
function canonicalParagraph(paragraph, listNumId) {
|
|
24
|
+
if (paragraph.constructs !== void 0 && paragraph.constructs.length > 0) throw unsupportedContent("run-level construct extents (a field, bookmark, note, annotation, or tracked change)", "a paragraph");
|
|
25
|
+
const canonical = {
|
|
26
|
+
kind: "paragraph",
|
|
27
|
+
runs: require_typed_shared_paragraph.segmentOdfParagraphRuns(paragraph.runs).map(canonicalRun)
|
|
28
|
+
};
|
|
29
|
+
if (paragraph.headingLevel !== void 0) {
|
|
30
|
+
canonical.headingLevel = paragraph.headingLevel;
|
|
31
|
+
canonical.styleId = `Heading${paragraph.headingLevel}`;
|
|
32
|
+
}
|
|
33
|
+
if (paragraph.alignment !== void 0) canonical.alignment = paragraph.alignment;
|
|
34
|
+
if (listNumId !== void 0 && paragraph.list !== void 0) canonical.list = {
|
|
35
|
+
numId: listNumId,
|
|
36
|
+
level: paragraph.list.level
|
|
37
|
+
};
|
|
38
|
+
if (paragraph.spacingBeforePt !== void 0) canonical.spacingBeforePt = paragraph.spacingBeforePt;
|
|
39
|
+
if (paragraph.spacingAfterPt !== void 0) canonical.spacingAfterPt = paragraph.spacingAfterPt;
|
|
40
|
+
if (paragraph.lineSpacing !== void 0) canonical.lineSpacing = paragraph.lineSpacing;
|
|
41
|
+
if (paragraph.indentLeftPt !== void 0) canonical.indentLeftPt = paragraph.indentLeftPt;
|
|
42
|
+
if (paragraph.indentFirstLinePt !== void 0) canonical.indentFirstLinePt = paragraph.indentFirstLinePt;
|
|
43
|
+
if (paragraph.pageBreakBefore !== void 0) canonical.pageBreakBefore = paragraph.pageBreakBefore;
|
|
44
|
+
if (paragraph.pageBreakAfter !== void 0) canonical.pageBreakAfter = paragraph.pageBreakAfter;
|
|
45
|
+
return canonical;
|
|
46
|
+
}
|
|
47
|
+
function canonicalCell(cell, covered) {
|
|
48
|
+
if (covered) return { blocks: [] };
|
|
49
|
+
const canonical = { blocks: cell.blocks.map((block) => {
|
|
50
|
+
if (block.kind !== "paragraph") throw unsupportedContent(`a "${block.kind}" block`, "a table cell");
|
|
51
|
+
return canonicalParagraph(block, void 0);
|
|
52
|
+
}) };
|
|
53
|
+
if (cell.colSpan !== void 0) canonical.colSpan = cell.colSpan;
|
|
54
|
+
if (cell.rowSpan !== void 0) canonical.rowSpan = cell.rowSpan;
|
|
55
|
+
if (cell.background !== void 0) canonical.background = canonicalColor(cell.background);
|
|
56
|
+
if (cell.borders !== void 0) {
|
|
57
|
+
const borders = {};
|
|
58
|
+
for (const edge of [
|
|
59
|
+
"left",
|
|
60
|
+
"right",
|
|
61
|
+
"top",
|
|
62
|
+
"bottom"
|
|
63
|
+
]) {
|
|
64
|
+
const border = cell.borders[edge];
|
|
65
|
+
if (border !== void 0) borders[edge] = {
|
|
66
|
+
color: canonicalColor(border.color),
|
|
67
|
+
widthPt: border.widthPt,
|
|
68
|
+
style: border.style ?? "solid"
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
canonical.borders = borders;
|
|
72
|
+
}
|
|
73
|
+
return canonical;
|
|
74
|
+
}
|
|
75
|
+
function canonicalTable(table) {
|
|
76
|
+
const covered = /* @__PURE__ */ new Set();
|
|
77
|
+
return {
|
|
78
|
+
kind: "table",
|
|
79
|
+
columnWidthsPt: [...table.columnWidthsPt],
|
|
80
|
+
rows: table.rows.map((row, rowIndex) => {
|
|
81
|
+
const cells = row.cells.map((cell, columnIndex) => {
|
|
82
|
+
const key = `${rowIndex},${columnIndex}`;
|
|
83
|
+
const isCovered = covered.has(key);
|
|
84
|
+
if (!isCovered) {
|
|
85
|
+
const colSpan = cell.colSpan ?? 1;
|
|
86
|
+
const rowSpan = cell.rowSpan ?? 1;
|
|
87
|
+
for (let r = rowIndex; r < rowIndex + rowSpan; r += 1) for (let c = columnIndex; c < columnIndex + colSpan; c += 1) if (r !== rowIndex || c !== columnIndex) covered.add(`${r},${c}`);
|
|
88
|
+
}
|
|
89
|
+
return canonicalCell(cell, isCovered);
|
|
90
|
+
});
|
|
91
|
+
return row.heightPt === void 0 ? { cells } : {
|
|
92
|
+
cells,
|
|
93
|
+
heightPt: row.heightPt
|
|
94
|
+
};
|
|
95
|
+
})
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function canonicalMetadata(metadata) {
|
|
99
|
+
const canonical = {};
|
|
100
|
+
if (metadata.title !== void 0) canonical.title = metadata.title;
|
|
101
|
+
if (metadata.author !== void 0) canonical.author = metadata.author;
|
|
102
|
+
if (metadata.subject !== void 0) canonical.subject = metadata.subject;
|
|
103
|
+
if (metadata.keywords !== void 0 && metadata.keywords.length > 0) canonical.keywords = [...metadata.keywords];
|
|
104
|
+
if (metadata.creator !== void 0) canonical.creator = metadata.creator;
|
|
105
|
+
if (metadata.createdIso !== void 0) canonical.createdIso = metadata.createdIso;
|
|
106
|
+
if (metadata.modifiedIso !== void 0) canonical.modifiedIso = metadata.modifiedIso;
|
|
107
|
+
return canonical;
|
|
108
|
+
}
|
|
109
|
+
function canonicalImage(image) {
|
|
110
|
+
const canonical = {
|
|
111
|
+
kind: "image",
|
|
112
|
+
format: image.format,
|
|
113
|
+
base64: image.base64,
|
|
114
|
+
widthPt: image.widthPt,
|
|
115
|
+
heightPt: image.heightPt
|
|
116
|
+
};
|
|
117
|
+
if (image.altText !== void 0) canonical.altText = image.altText;
|
|
118
|
+
return canonical;
|
|
119
|
+
}
|
|
120
|
+
//#endregion
|
|
121
|
+
exports.canonicalColor = canonicalColor;
|
|
122
|
+
exports.canonicalImage = canonicalImage;
|
|
123
|
+
exports.canonicalMetadata = canonicalMetadata;
|
|
124
|
+
exports.canonicalParagraph = canonicalParagraph;
|
|
125
|
+
exports.canonicalRun = canonicalRun;
|
|
126
|
+
exports.canonicalTable = canonicalTable;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Color, ContentImageBlock, ContentParagraph, ContentRun, ContentTable, LayoutMetadata } from "document-schema.js";
|
|
2
|
+
//#region src/typed/shared/canonicalise.d.ts
|
|
3
|
+
declare function canonicalColor(color: Color): Color;
|
|
4
|
+
declare function canonicalRun(run: ContentRun): ContentRun;
|
|
5
|
+
declare function canonicalParagraph(paragraph: ContentParagraph, listNumId: string | undefined): ContentParagraph;
|
|
6
|
+
declare function canonicalTable(table: ContentTable): ContentTable;
|
|
7
|
+
declare function canonicalMetadata(metadata: LayoutMetadata): LayoutMetadata;
|
|
8
|
+
declare function canonicalImage(image: ContentImageBlock): ContentImageBlock;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { canonicalColor, canonicalImage, canonicalMetadata, canonicalParagraph, canonicalRun, canonicalTable };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Color, ContentImageBlock, ContentParagraph, ContentRun, ContentTable, LayoutMetadata } from "document-schema.js";
|
|
2
|
+
//#region src/typed/shared/canonicalise.d.ts
|
|
3
|
+
declare function canonicalColor(color: Color): Color;
|
|
4
|
+
declare function canonicalRun(run: ContentRun): ContentRun;
|
|
5
|
+
declare function canonicalParagraph(paragraph: ContentParagraph, listNumId: string | undefined): ContentParagraph;
|
|
6
|
+
declare function canonicalTable(table: ContentTable): ContentTable;
|
|
7
|
+
declare function canonicalMetadata(metadata: LayoutMetadata): LayoutMetadata;
|
|
8
|
+
declare function canonicalImage(image: ContentImageBlock): ContentImageBlock;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { canonicalColor, canonicalImage, canonicalMetadata, canonicalParagraph, canonicalRun, canonicalTable };
|