ooxml.js 2.4.0 → 2.5.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 +40 -2
- package/dist/codec.cjs +28 -0
- package/dist/codec.d.cts +72 -0
- package/dist/codec.d.ts +72 -0
- package/dist/codec.js +24 -0
- package/dist/compact.cjs +162 -0
- package/dist/compact.d.cts +70 -0
- package/dist/compact.d.ts +70 -0
- package/dist/compact.js +152 -0
- package/dist/image/sniff.cjs +28 -0
- package/dist/image/sniff.d.cts +5 -0
- package/dist/image/sniff.d.ts +5 -0
- package/dist/image/sniff.js +27 -0
- package/dist/index.cjs +83 -3025
- package/dist/index.d.cts +22 -527
- package/dist/index.d.ts +22 -527
- package/dist/index.js +22 -2964
- package/dist/model/node.cjs +67 -0
- package/dist/model/node.d.cts +2 -0
- package/dist/model/node.d.ts +2 -0
- package/dist/model/node.js +58 -0
- package/dist/model/package.cjs +19 -0
- package/dist/model/package.d.cts +2 -0
- package/dist/model/package.d.ts +2 -0
- package/dist/model/package.js +15 -0
- package/dist/node-CkBWRjNR.d.cts +83 -0
- package/dist/node-CkBWRjNR.d.ts +83 -0
- package/dist/package-BUojjTXf.d.ts +114 -0
- package/dist/package-L24lkba-.d.cts +114 -0
- package/dist/package-io/read.cjs +33 -0
- package/dist/package-io/read.d.cts +5 -0
- package/dist/package-io/read.d.ts +5 -0
- package/dist/package-io/read.js +32 -0
- package/dist/package-io/write.cjs +18 -0
- package/dist/package-io/write.d.cts +5 -0
- package/dist/package-io/write.d.ts +5 -0
- package/dist/package-io/write.js +17 -0
- package/dist/typed/docx/read.cjs +332 -0
- package/dist/typed/docx/read.d.cts +52 -0
- package/dist/typed/docx/read.d.ts +52 -0
- package/dist/typed/docx/read.js +328 -0
- package/dist/typed/docx/styles.cjs +148 -0
- package/dist/typed/docx/styles.d.cts +29 -0
- package/dist/typed/docx/styles.d.ts +29 -0
- package/dist/typed/docx/styles.js +146 -0
- package/dist/typed/pptx/inherit.cjs +96 -0
- package/dist/typed/pptx/inherit.d.cts +30 -0
- package/dist/typed/pptx/inherit.d.ts +30 -0
- package/dist/typed/pptx/inherit.js +90 -0
- package/dist/typed/pptx/read.cjs +364 -0
- package/dist/typed/pptx/read.d.cts +44 -0
- package/dist/typed/pptx/read.d.ts +44 -0
- package/dist/typed/pptx/read.js +362 -0
- package/dist/typed/shared/color.cjs +85 -0
- package/dist/typed/shared/color.d.cts +9 -0
- package/dist/typed/shared/color.d.ts +9 -0
- package/dist/typed/shared/color.js +84 -0
- package/dist/typed/shared/drawingml.cjs +191 -0
- package/dist/typed/shared/drawingml.d.cts +40 -0
- package/dist/typed/shared/drawingml.d.ts +40 -0
- package/dist/typed/shared/drawingml.js +180 -0
- package/dist/typed/shared/metadata.cjs +44 -0
- package/dist/typed/shared/metadata.d.cts +16 -0
- package/dist/typed/shared/metadata.d.ts +16 -0
- package/dist/typed/shared/metadata.js +42 -0
- package/dist/typed/shared/source-path.cjs +18 -0
- package/dist/typed/shared/source-path.d.cts +5 -0
- package/dist/typed/shared/source-path.d.ts +5 -0
- package/dist/typed/shared/source-path.js +17 -0
- package/dist/typed/shared/units.cjs +55 -0
- package/dist/typed/shared/units.d.cts +20 -0
- package/dist/typed/shared/units.d.ts +20 -0
- package/dist/typed/shared/units.js +38 -0
- package/dist/typed/util.cjs +85 -0
- package/dist/typed/util.d.cts +18 -0
- package/dist/typed/util.d.ts +18 -0
- package/dist/typed/util.js +77 -0
- package/dist/typed/xlsx/a1.cjs +64 -0
- package/dist/typed/xlsx/a1.d.cts +19 -0
- package/dist/typed/xlsx/a1.d.ts +19 -0
- package/dist/typed/xlsx/a1.js +58 -0
- package/dist/typed/xlsx/build.cjs +456 -0
- package/dist/typed/xlsx/build.d.cts +6 -0
- package/dist/typed/xlsx/build.d.ts +6 -0
- package/dist/typed/xlsx/build.js +455 -0
- package/dist/typed/xlsx/content.cjs +257 -0
- package/dist/typed/xlsx/content.d.cts +6 -0
- package/dist/typed/xlsx/content.d.ts +6 -0
- package/dist/typed/xlsx/content.js +256 -0
- package/dist/typed/xlsx/defined-names.cjs +90 -0
- package/dist/typed/xlsx/defined-names.d.cts +20 -0
- package/dist/typed/xlsx/defined-names.d.ts +20 -0
- package/dist/typed/xlsx/defined-names.js +83 -0
- package/dist/typed/xlsx/print-settings.cjs +116 -0
- package/dist/typed/xlsx/print-settings.d.cts +8 -0
- package/dist/typed/xlsx/print-settings.d.ts +8 -0
- package/dist/typed/xlsx/print-settings.js +114 -0
- package/dist/typed/xlsx/shared-strings.cjs +35 -0
- package/dist/typed/xlsx/shared-strings.d.cts +12 -0
- package/dist/typed/xlsx/shared-strings.d.ts +12 -0
- package/dist/typed/xlsx/shared-strings.js +33 -0
- package/dist/typed/xlsx/units.cjs +21 -0
- package/dist/typed/xlsx/units.d.cts +8 -0
- package/dist/typed/xlsx/units.d.ts +8 -0
- package/dist/typed/xlsx/units.js +16 -0
- package/dist/typed/xlsx/util.cjs +53 -0
- package/dist/typed/xlsx/util.d.cts +10 -0
- package/dist/typed/xlsx/util.d.ts +10 -0
- package/dist/typed/xlsx/util.js +47 -0
- package/dist/typed/xlsx.cjs +140 -0
- package/dist/typed/xlsx.d.cts +43 -0
- package/dist/typed/xlsx.d.ts +43 -0
- package/dist/typed/xlsx.js +135 -0
- package/dist/util/base64.cjs +48 -0
- package/dist/util/base64.d.cts +5 -0
- package/dist/util/base64.d.ts +5 -0
- package/dist/util/base64.js +46 -0
- package/dist/xml/build.cjs +46 -0
- package/dist/xml/build.d.cts +5 -0
- package/dist/xml/build.d.ts +5 -0
- package/dist/xml/build.js +46 -0
- package/dist/xml/entities.cjs +7 -0
- package/dist/xml/entities.d.cts +4 -0
- package/dist/xml/entities.d.ts +4 -0
- package/dist/xml/entities.js +6 -0
- package/dist/xml/fragment.cjs +22 -0
- package/dist/xml/fragment.d.cts +6 -0
- package/dist/xml/fragment.d.ts +6 -0
- package/dist/xml/fragment.js +20 -0
- package/dist/xml/parse.cjs +88 -0
- package/dist/xml/parse.d.cts +5 -0
- package/dist/xml/parse.d.ts +5 -0
- package/dist/xml/parse.js +88 -0
- package/dist/zip.cjs +12 -0
- package/dist/zip.d.cts +5 -0
- package/dist/zip.d.ts +5 -0
- package/dist/zip.js +10 -0
- package/package.json +9 -1
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_xml_fragment = require("../../xml/fragment.cjs");
|
|
3
|
+
const require_xml_entities = require("../../xml/entities.cjs");
|
|
4
|
+
require("../shared/units.cjs");
|
|
5
|
+
const require_typed_xlsx_shared_strings = require("./shared-strings.cjs");
|
|
6
|
+
const require_typed_xlsx_a1 = require("./a1.cjs");
|
|
7
|
+
const require_typed_xlsx_defined_names = require("./defined-names.cjs");
|
|
8
|
+
const require_typed_xlsx_util = require("./util.cjs");
|
|
9
|
+
const require_typed_xlsx_print_settings = require("./print-settings.cjs");
|
|
10
|
+
const require_typed_xlsx_units = require("./units.cjs");
|
|
11
|
+
//#region src/typed/xlsx/build.ts
|
|
12
|
+
const SML_NS = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
|
|
13
|
+
const REL_NS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
|
|
14
|
+
const PKG_RELS_NS = "http://schemas.openxmlformats.org/package/2006/relationships";
|
|
15
|
+
const CONTENT_TYPES_NS = "http://schemas.openxmlformats.org/package/2006/content-types";
|
|
16
|
+
const CORE_PROPS_NS = "http://schemas.openxmlformats.org/package/2006/metadata/core-properties";
|
|
17
|
+
const DC_NS = "http://purl.org/dc/elements/1.1/";
|
|
18
|
+
const DCTERMS_NS = "http://purl.org/dc/terms/";
|
|
19
|
+
const XSI_NS = "http://www.w3.org/2001/XMLSchema-instance";
|
|
20
|
+
const EXTENDED_PROPS_NS = "http://schemas.openxmlformats.org/officeDocument/2006/extended-properties";
|
|
21
|
+
const CT_WORKBOOK = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml";
|
|
22
|
+
const CT_STYLES = "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml";
|
|
23
|
+
const CT_SHARED_STRINGS = "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml";
|
|
24
|
+
const CT_WORKSHEET = "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml";
|
|
25
|
+
const CT_CORE_PROPS = "application/vnd.openxmlformats-package.core-properties+xml";
|
|
26
|
+
const CT_EXTENDED_PROPS = "application/vnd.openxmlformats-officedocument.extended-properties+xml";
|
|
27
|
+
const REL_OFFICE_DOCUMENT = `${REL_NS}/officeDocument`;
|
|
28
|
+
const REL_CORE_PROPS = `${PKG_RELS_NS}/metadata/core-properties`;
|
|
29
|
+
const REL_EXTENDED_PROPS = `${REL_NS}/extended-properties`;
|
|
30
|
+
const REL_WORKSHEET = `${REL_NS}/worksheet`;
|
|
31
|
+
const REL_STYLES = `${REL_NS}/styles`;
|
|
32
|
+
const REL_SHARED_STRINGS = `${REL_NS}/sharedStrings`;
|
|
33
|
+
const MAX_COLUMN_INDEX = 16383;
|
|
34
|
+
const MAX_ROW_INDEX = 1048575;
|
|
35
|
+
function xmlDeclaration() {
|
|
36
|
+
return {
|
|
37
|
+
type: "declaration",
|
|
38
|
+
attributes: [
|
|
39
|
+
{
|
|
40
|
+
name: "version",
|
|
41
|
+
value: "1.0"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: "encoding",
|
|
45
|
+
value: "UTF-8"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: "standalone",
|
|
49
|
+
value: "yes"
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function xmlPart(root) {
|
|
55
|
+
return {
|
|
56
|
+
kind: "xml",
|
|
57
|
+
nodes: [xmlDeclaration(), root]
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function buildContentTypesPart(sheetCount) {
|
|
61
|
+
const overrides = [
|
|
62
|
+
require_xml_fragment.el("Override", {
|
|
63
|
+
PartName: "/xl/workbook.xml",
|
|
64
|
+
ContentType: CT_WORKBOOK
|
|
65
|
+
}),
|
|
66
|
+
require_xml_fragment.el("Override", {
|
|
67
|
+
PartName: "/xl/styles.xml",
|
|
68
|
+
ContentType: CT_STYLES
|
|
69
|
+
}),
|
|
70
|
+
require_xml_fragment.el("Override", {
|
|
71
|
+
PartName: "/xl/sharedStrings.xml",
|
|
72
|
+
ContentType: CT_SHARED_STRINGS
|
|
73
|
+
})
|
|
74
|
+
];
|
|
75
|
+
for (let index = 0; index < sheetCount; index++) overrides.push(require_xml_fragment.el("Override", {
|
|
76
|
+
PartName: `/xl/worksheets/sheet${index + 1}.xml`,
|
|
77
|
+
ContentType: CT_WORKSHEET
|
|
78
|
+
}));
|
|
79
|
+
overrides.push(require_xml_fragment.el("Override", {
|
|
80
|
+
PartName: "/docProps/core.xml",
|
|
81
|
+
ContentType: CT_CORE_PROPS
|
|
82
|
+
}));
|
|
83
|
+
overrides.push(require_xml_fragment.el("Override", {
|
|
84
|
+
PartName: "/docProps/app.xml",
|
|
85
|
+
ContentType: CT_EXTENDED_PROPS
|
|
86
|
+
}));
|
|
87
|
+
return xmlPart(require_xml_fragment.el("Types", { xmlns: CONTENT_TYPES_NS }, [
|
|
88
|
+
require_xml_fragment.el("Default", {
|
|
89
|
+
Extension: "rels",
|
|
90
|
+
ContentType: "application/vnd.openxmlformats-package.relationships+xml"
|
|
91
|
+
}),
|
|
92
|
+
require_xml_fragment.el("Default", {
|
|
93
|
+
Extension: "xml",
|
|
94
|
+
ContentType: "application/xml"
|
|
95
|
+
}),
|
|
96
|
+
...overrides
|
|
97
|
+
]));
|
|
98
|
+
}
|
|
99
|
+
function buildPackageRelsPart() {
|
|
100
|
+
return xmlPart(require_xml_fragment.el("Relationships", { xmlns: PKG_RELS_NS }, [
|
|
101
|
+
require_xml_fragment.el("Relationship", {
|
|
102
|
+
Id: "rId1",
|
|
103
|
+
Type: REL_OFFICE_DOCUMENT,
|
|
104
|
+
Target: "xl/workbook.xml"
|
|
105
|
+
}),
|
|
106
|
+
require_xml_fragment.el("Relationship", {
|
|
107
|
+
Id: "rId2",
|
|
108
|
+
Type: REL_CORE_PROPS,
|
|
109
|
+
Target: "docProps/core.xml"
|
|
110
|
+
}),
|
|
111
|
+
require_xml_fragment.el("Relationship", {
|
|
112
|
+
Id: "rId3",
|
|
113
|
+
Type: REL_EXTENDED_PROPS,
|
|
114
|
+
Target: "docProps/app.xml"
|
|
115
|
+
})
|
|
116
|
+
]));
|
|
117
|
+
}
|
|
118
|
+
function worksheetRelId(sheetIndex) {
|
|
119
|
+
return `rId${sheetIndex + 1}`;
|
|
120
|
+
}
|
|
121
|
+
function buildWorkbookRelsPart(sheetCount) {
|
|
122
|
+
const relationships = [];
|
|
123
|
+
for (let index = 0; index < sheetCount; index++) relationships.push(require_xml_fragment.el("Relationship", {
|
|
124
|
+
Id: worksheetRelId(index),
|
|
125
|
+
Type: REL_WORKSHEET,
|
|
126
|
+
Target: `worksheets/sheet${index + 1}.xml`
|
|
127
|
+
}));
|
|
128
|
+
relationships.push(require_xml_fragment.el("Relationship", {
|
|
129
|
+
Id: `rId${sheetCount + 1}`,
|
|
130
|
+
Type: REL_STYLES,
|
|
131
|
+
Target: "styles.xml"
|
|
132
|
+
}));
|
|
133
|
+
relationships.push(require_xml_fragment.el("Relationship", {
|
|
134
|
+
Id: `rId${sheetCount + 2}`,
|
|
135
|
+
Type: REL_SHARED_STRINGS,
|
|
136
|
+
Target: "sharedStrings.xml"
|
|
137
|
+
}));
|
|
138
|
+
return xmlPart(require_xml_fragment.el("Relationships", { xmlns: PKG_RELS_NS }, relationships));
|
|
139
|
+
}
|
|
140
|
+
function buildDefinedNameElements(sheets) {
|
|
141
|
+
const elements = [];
|
|
142
|
+
sheets.forEach((sheet, sheetIndex) => {
|
|
143
|
+
const { printRange, repeatRows, repeatColumns } = sheet.printSettings;
|
|
144
|
+
if (printRange !== void 0) {
|
|
145
|
+
const value = require_typed_xlsx_defined_names.buildPrintAreaValue(sheet.name, printRange);
|
|
146
|
+
elements.push(require_xml_fragment.el("definedName", {
|
|
147
|
+
name: require_typed_xlsx_defined_names.XLNM_PRINT_AREA,
|
|
148
|
+
localSheetId: String(sheetIndex)
|
|
149
|
+
}, [require_xml_fragment.txt(require_xml_entities.encodeXmlText(value))]));
|
|
150
|
+
}
|
|
151
|
+
if (repeatRows !== void 0 || repeatColumns !== void 0) {
|
|
152
|
+
const value = require_typed_xlsx_defined_names.buildPrintTitlesValue(sheet.name, repeatRows, repeatColumns);
|
|
153
|
+
if (value !== void 0) elements.push(require_xml_fragment.el("definedName", {
|
|
154
|
+
name: require_typed_xlsx_defined_names.XLNM_PRINT_TITLES,
|
|
155
|
+
localSheetId: String(sheetIndex)
|
|
156
|
+
}, [require_xml_fragment.txt(require_xml_entities.encodeXmlText(value))]));
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
return elements;
|
|
160
|
+
}
|
|
161
|
+
function buildWorkbookPart(sheets) {
|
|
162
|
+
const children = [require_xml_fragment.el("sheets", {}, sheets.map((sheet, index) => require_xml_fragment.el("sheet", {
|
|
163
|
+
name: require_xml_entities.encodeXmlText(sheet.name),
|
|
164
|
+
sheetId: String(index + 1),
|
|
165
|
+
"r:id": worksheetRelId(index)
|
|
166
|
+
})))];
|
|
167
|
+
const definedNameElements = buildDefinedNameElements(sheets);
|
|
168
|
+
if (definedNameElements.length > 0) children.push(require_xml_fragment.el("definedNames", {}, definedNameElements));
|
|
169
|
+
return xmlPart(require_xml_fragment.el("workbook", {
|
|
170
|
+
xmlns: SML_NS,
|
|
171
|
+
"xmlns:r": REL_NS
|
|
172
|
+
}, children));
|
|
173
|
+
}
|
|
174
|
+
function buildSharedStringsPart(sharedStrings) {
|
|
175
|
+
const entries = sharedStrings.entries();
|
|
176
|
+
const siElements = entries.map((value) => require_xml_fragment.el("si", {}, [require_xml_fragment.el("t", { "xml:space": "preserve" }, [require_xml_fragment.txt(require_xml_entities.encodeXmlText(value))])]));
|
|
177
|
+
return xmlPart(require_xml_fragment.el("sst", {
|
|
178
|
+
xmlns: SML_NS,
|
|
179
|
+
count: String(entries.length),
|
|
180
|
+
uniqueCount: String(entries.length)
|
|
181
|
+
}, siElements));
|
|
182
|
+
}
|
|
183
|
+
function buildStylesPart() {
|
|
184
|
+
return xmlPart(require_xml_fragment.el("styleSheet", { xmlns: SML_NS }, [
|
|
185
|
+
require_xml_fragment.el("fonts", { count: "1" }, [require_xml_fragment.el("font", {}, [require_xml_fragment.el("sz", { val: "11" }), require_xml_fragment.el("name", { val: "Calibri" })])]),
|
|
186
|
+
require_xml_fragment.el("fills", { count: "2" }, [require_xml_fragment.el("fill", {}, [require_xml_fragment.el("patternFill", { patternType: "none" })]), require_xml_fragment.el("fill", {}, [require_xml_fragment.el("patternFill", { patternType: "gray125" })])]),
|
|
187
|
+
require_xml_fragment.el("borders", { count: "1" }, [require_xml_fragment.el("border", {}, [
|
|
188
|
+
require_xml_fragment.el("left"),
|
|
189
|
+
require_xml_fragment.el("right"),
|
|
190
|
+
require_xml_fragment.el("top"),
|
|
191
|
+
require_xml_fragment.el("bottom"),
|
|
192
|
+
require_xml_fragment.el("diagonal")
|
|
193
|
+
])]),
|
|
194
|
+
require_xml_fragment.el("cellStyleXfs", { count: "1" }, [require_xml_fragment.el("xf", {
|
|
195
|
+
numFmtId: "0",
|
|
196
|
+
fontId: "0",
|
|
197
|
+
fillId: "0",
|
|
198
|
+
borderId: "0"
|
|
199
|
+
})]),
|
|
200
|
+
require_xml_fragment.el("cellXfs", { count: "1" }, [require_xml_fragment.el("xf", {
|
|
201
|
+
numFmtId: "0",
|
|
202
|
+
fontId: "0",
|
|
203
|
+
fillId: "0",
|
|
204
|
+
borderId: "0",
|
|
205
|
+
xfId: "0"
|
|
206
|
+
})]),
|
|
207
|
+
require_xml_fragment.el("cellStyles", { count: "1" }, [require_xml_fragment.el("cellStyle", {
|
|
208
|
+
name: "Normal",
|
|
209
|
+
xfId: "0",
|
|
210
|
+
builtinId: "0"
|
|
211
|
+
})])
|
|
212
|
+
]));
|
|
213
|
+
}
|
|
214
|
+
function buildCorePropertiesPart(metadata) {
|
|
215
|
+
const children = [];
|
|
216
|
+
if (metadata.title !== void 0) children.push(require_xml_fragment.el("dc:title", {}, [require_xml_fragment.txt(require_xml_entities.encodeXmlText(metadata.title))]));
|
|
217
|
+
if (metadata.author !== void 0) children.push(require_xml_fragment.el("dc:creator", {}, [require_xml_fragment.txt(require_xml_entities.encodeXmlText(metadata.author))]));
|
|
218
|
+
if (metadata.subject !== void 0) children.push(require_xml_fragment.el("dc:subject", {}, [require_xml_fragment.txt(require_xml_entities.encodeXmlText(metadata.subject))]));
|
|
219
|
+
if (metadata.keywords !== void 0 && metadata.keywords.length > 0) children.push(require_xml_fragment.el("cp:keywords", {}, [require_xml_fragment.txt(require_xml_entities.encodeXmlText(metadata.keywords.join(", ")))]));
|
|
220
|
+
if (metadata.createdIso !== void 0) children.push(require_xml_fragment.el("dcterms:created", { "xsi:type": "dcterms:W3CDTF" }, [require_xml_fragment.txt(require_xml_entities.encodeXmlText(metadata.createdIso))]));
|
|
221
|
+
if (metadata.modifiedIso !== void 0) children.push(require_xml_fragment.el("dcterms:modified", { "xsi:type": "dcterms:W3CDTF" }, [require_xml_fragment.txt(require_xml_entities.encodeXmlText(metadata.modifiedIso))]));
|
|
222
|
+
return xmlPart(require_xml_fragment.el("cp:coreProperties", {
|
|
223
|
+
"xmlns:cp": CORE_PROPS_NS,
|
|
224
|
+
"xmlns:dc": DC_NS,
|
|
225
|
+
"xmlns:dcterms": DCTERMS_NS,
|
|
226
|
+
"xmlns:xsi": XSI_NS
|
|
227
|
+
}, children));
|
|
228
|
+
}
|
|
229
|
+
function buildAppPropertiesPart(metadata) {
|
|
230
|
+
const children = [];
|
|
231
|
+
if (metadata.creator !== void 0) children.push(require_xml_fragment.el("Application", {}, [require_xml_fragment.txt(require_xml_entities.encodeXmlText(metadata.creator))]));
|
|
232
|
+
return xmlPart(require_xml_fragment.el("Properties", { xmlns: EXTENDED_PROPS_NS }, children));
|
|
233
|
+
}
|
|
234
|
+
function computeDimension(sheet) {
|
|
235
|
+
let maxRow = 0;
|
|
236
|
+
let maxColumn = 0;
|
|
237
|
+
let hasAny = false;
|
|
238
|
+
for (const cell of sheet.cells) {
|
|
239
|
+
hasAny = true;
|
|
240
|
+
maxRow = Math.max(maxRow, cell.row);
|
|
241
|
+
maxColumn = Math.max(maxColumn, cell.column);
|
|
242
|
+
}
|
|
243
|
+
for (const column of sheet.columns) {
|
|
244
|
+
hasAny = true;
|
|
245
|
+
maxColumn = Math.max(maxColumn, column.index);
|
|
246
|
+
}
|
|
247
|
+
for (const row of sheet.rows) {
|
|
248
|
+
hasAny = true;
|
|
249
|
+
maxRow = Math.max(maxRow, row.index);
|
|
250
|
+
}
|
|
251
|
+
return hasAny ? require_typed_xlsx_a1.rangeReference({
|
|
252
|
+
startRow: 0,
|
|
253
|
+
startColumn: 0,
|
|
254
|
+
endRow: maxRow,
|
|
255
|
+
endColumn: maxColumn
|
|
256
|
+
}) : "A1";
|
|
257
|
+
}
|
|
258
|
+
function buildColsElement(columns) {
|
|
259
|
+
if (columns.length === 0) return;
|
|
260
|
+
return require_xml_fragment.el("cols", {}, columns.map((column) => {
|
|
261
|
+
const attrs = {
|
|
262
|
+
min: String(column.index + 1),
|
|
263
|
+
max: String(column.index + 1),
|
|
264
|
+
width: require_typed_xlsx_units.ptToColumnWidthChars(column.widthPt).toFixed(2),
|
|
265
|
+
customWidth: "true"
|
|
266
|
+
};
|
|
267
|
+
if (column.hidden === true) attrs.hidden = "true";
|
|
268
|
+
return require_xml_fragment.el("col", attrs);
|
|
269
|
+
}));
|
|
270
|
+
}
|
|
271
|
+
function renderCellValue(value, isFormulaResult, sharedStrings) {
|
|
272
|
+
switch (value.kind) {
|
|
273
|
+
case "string":
|
|
274
|
+
if (isFormulaResult) return {
|
|
275
|
+
type: "str",
|
|
276
|
+
content: require_xml_entities.encodeXmlText(value.value)
|
|
277
|
+
};
|
|
278
|
+
return {
|
|
279
|
+
type: "s",
|
|
280
|
+
content: String(sharedStrings.intern(value.value))
|
|
281
|
+
};
|
|
282
|
+
case "number":
|
|
283
|
+
case "percentage":
|
|
284
|
+
case "currency": return { content: String(value.value) };
|
|
285
|
+
case "boolean": return {
|
|
286
|
+
type: "b",
|
|
287
|
+
content: value.value ? "1" : "0"
|
|
288
|
+
};
|
|
289
|
+
case "date":
|
|
290
|
+
case "time": return {
|
|
291
|
+
type: "d",
|
|
292
|
+
content: require_xml_entities.encodeXmlText(value.value)
|
|
293
|
+
};
|
|
294
|
+
case "error": return {
|
|
295
|
+
type: "e",
|
|
296
|
+
content: require_xml_entities.encodeXmlText(value.value)
|
|
297
|
+
};
|
|
298
|
+
case "empty": return;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
function buildCellElement(cell, sharedStrings) {
|
|
302
|
+
const attrs = {
|
|
303
|
+
r: require_typed_xlsx_a1.cellReference(cell.row, cell.column),
|
|
304
|
+
s: "0"
|
|
305
|
+
};
|
|
306
|
+
const children = [];
|
|
307
|
+
if (cell.formula !== void 0) children.push(require_xml_fragment.el("f", {}, [require_xml_fragment.txt(require_xml_entities.encodeXmlText(cell.formula))]));
|
|
308
|
+
const rendered = renderCellValue(cell.value, cell.formula !== void 0, sharedStrings);
|
|
309
|
+
if (rendered !== void 0) {
|
|
310
|
+
if (rendered.type !== void 0) attrs.t = rendered.type;
|
|
311
|
+
children.push(require_xml_fragment.el("v", {}, [require_xml_fragment.txt(rendered.content)]));
|
|
312
|
+
}
|
|
313
|
+
return require_xml_fragment.el("c", attrs, children);
|
|
314
|
+
}
|
|
315
|
+
function buildSheetDataElement(sheet, sharedStrings) {
|
|
316
|
+
const cellsByRow = /* @__PURE__ */ new Map();
|
|
317
|
+
for (const cell of sheet.cells) {
|
|
318
|
+
const existing = cellsByRow.get(cell.row);
|
|
319
|
+
if (existing === void 0) cellsByRow.set(cell.row, [cell]);
|
|
320
|
+
else existing.push(cell);
|
|
321
|
+
}
|
|
322
|
+
const rowInfoByIndex = /* @__PURE__ */ new Map();
|
|
323
|
+
for (const row of sheet.rows) rowInfoByIndex.set(row.index, row);
|
|
324
|
+
return require_xml_fragment.el("sheetData", {}, Array.from(/* @__PURE__ */ new Set([...cellsByRow.keys(), ...rowInfoByIndex.keys()])).sort((a, b) => a - b).map((rowIndex) => {
|
|
325
|
+
const cells = (cellsByRow.get(rowIndex) ?? []).slice().sort((a, b) => a.column - b.column);
|
|
326
|
+
const rowInfo = rowInfoByIndex.get(rowIndex);
|
|
327
|
+
const attrs = { r: String(rowIndex + 1) };
|
|
328
|
+
if (rowInfo !== void 0) {
|
|
329
|
+
attrs.ht = String(rowInfo.heightPt);
|
|
330
|
+
attrs.customHeight = "true";
|
|
331
|
+
if (rowInfo.hidden === true) attrs.hidden = "true";
|
|
332
|
+
}
|
|
333
|
+
return require_xml_fragment.el("row", attrs, cells.map((cell) => buildCellElement(cell, sharedStrings)));
|
|
334
|
+
}));
|
|
335
|
+
}
|
|
336
|
+
function buildMergeCellsElement(cells) {
|
|
337
|
+
const merges = cells.filter((cell) => (cell.colSpan ?? 1) > 1 || (cell.rowSpan ?? 1) > 1);
|
|
338
|
+
if (merges.length === 0) return;
|
|
339
|
+
const mergeCellElements = merges.map((cell) => {
|
|
340
|
+
const endRow = cell.row + (cell.rowSpan ?? 1) - 1;
|
|
341
|
+
const endColumn = cell.column + (cell.colSpan ?? 1) - 1;
|
|
342
|
+
return require_xml_fragment.el("mergeCell", { ref: require_typed_xlsx_a1.rangeReference({
|
|
343
|
+
startRow: cell.row,
|
|
344
|
+
startColumn: cell.column,
|
|
345
|
+
endRow,
|
|
346
|
+
endColumn
|
|
347
|
+
}) });
|
|
348
|
+
});
|
|
349
|
+
return require_xml_fragment.el("mergeCells", { count: String(mergeCellElements.length) }, mergeCellElements);
|
|
350
|
+
}
|
|
351
|
+
function buildSheetPrElement(settings) {
|
|
352
|
+
return require_xml_fragment.el("sheetPr", {}, [require_xml_fragment.el("pageSetUpPr", { fitToPage: require_typed_xlsx_util.writeXmlBool(settings.fitToPages !== void 0) })]);
|
|
353
|
+
}
|
|
354
|
+
function buildPrintOptionsElement(settings) {
|
|
355
|
+
return require_xml_fragment.el("printOptions", {
|
|
356
|
+
gridLines: require_typed_xlsx_util.writeXmlBool(settings.gridlines),
|
|
357
|
+
headings: require_typed_xlsx_util.writeXmlBool(settings.headers)
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
function ptToInches(pt) {
|
|
361
|
+
return String(pt / 72);
|
|
362
|
+
}
|
|
363
|
+
function buildPageMarginsElement(settings) {
|
|
364
|
+
const margins = settings.margins;
|
|
365
|
+
return require_xml_fragment.el("pageMargins", {
|
|
366
|
+
left: ptToInches(margins.leftPt),
|
|
367
|
+
right: ptToInches(margins.rightPt),
|
|
368
|
+
top: ptToInches(margins.topPt),
|
|
369
|
+
bottom: ptToInches(margins.bottomPt),
|
|
370
|
+
header: ptToInches(require_typed_xlsx_print_settings.DEFAULT_HEADER_FOOTER_MARGIN_PT),
|
|
371
|
+
footer: ptToInches(require_typed_xlsx_print_settings.DEFAULT_HEADER_FOOTER_MARGIN_PT)
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
function buildPageSetupElement(settings) {
|
|
375
|
+
const attrs = {};
|
|
376
|
+
const paperCode = require_typed_xlsx_util.pageSizeToPaperSizeCode(settings.pageSize);
|
|
377
|
+
if (paperCode !== void 0) attrs.paperSize = paperCode;
|
|
378
|
+
else {
|
|
379
|
+
attrs.paperWidth = require_typed_xlsx_util.ptToUniversalMeasure(settings.pageSize.widthPt);
|
|
380
|
+
attrs.paperHeight = require_typed_xlsx_util.ptToUniversalMeasure(settings.pageSize.heightPt);
|
|
381
|
+
}
|
|
382
|
+
attrs.scale = String(settings.scale ?? 100);
|
|
383
|
+
attrs.fitToWidth = String(settings.fitToPages?.width ?? 1);
|
|
384
|
+
attrs.fitToHeight = String(settings.fitToPages?.height ?? 1);
|
|
385
|
+
attrs.pageOrder = settings.pageOrder;
|
|
386
|
+
attrs.orientation = settings.pageSize.widthPt > settings.pageSize.heightPt ? "landscape" : "portrait";
|
|
387
|
+
return require_xml_fragment.el("pageSetup", attrs);
|
|
388
|
+
}
|
|
389
|
+
function buildBreaksElements(settings) {
|
|
390
|
+
const manualBreaks = settings.manualBreaks;
|
|
391
|
+
if (manualBreaks === void 0) return {};
|
|
392
|
+
const result = {};
|
|
393
|
+
if (manualBreaks.rows.length > 0) {
|
|
394
|
+
const breaks = manualBreaks.rows.map((id) => require_xml_fragment.el("brk", {
|
|
395
|
+
id: String(id),
|
|
396
|
+
min: "0",
|
|
397
|
+
max: String(MAX_COLUMN_INDEX),
|
|
398
|
+
man: "1"
|
|
399
|
+
}));
|
|
400
|
+
result.rowBreaks = require_xml_fragment.el("rowBreaks", {
|
|
401
|
+
count: String(breaks.length),
|
|
402
|
+
manualBreakCount: String(breaks.length)
|
|
403
|
+
}, breaks);
|
|
404
|
+
}
|
|
405
|
+
if (manualBreaks.columns.length > 0) {
|
|
406
|
+
const breaks = manualBreaks.columns.map((id) => require_xml_fragment.el("brk", {
|
|
407
|
+
id: String(id),
|
|
408
|
+
min: "0",
|
|
409
|
+
max: String(MAX_ROW_INDEX),
|
|
410
|
+
man: "1"
|
|
411
|
+
}));
|
|
412
|
+
result.colBreaks = require_xml_fragment.el("colBreaks", {
|
|
413
|
+
count: String(breaks.length),
|
|
414
|
+
manualBreakCount: String(breaks.length)
|
|
415
|
+
}, breaks);
|
|
416
|
+
}
|
|
417
|
+
return result;
|
|
418
|
+
}
|
|
419
|
+
function buildWorksheetPart(sheet, sharedStrings) {
|
|
420
|
+
const children = [buildSheetPrElement(sheet.printSettings), require_xml_fragment.el("dimension", { ref: computeDimension(sheet) })];
|
|
421
|
+
const colsElement = buildColsElement(sheet.columns);
|
|
422
|
+
if (colsElement !== void 0) children.push(colsElement);
|
|
423
|
+
children.push(buildSheetDataElement(sheet, sharedStrings));
|
|
424
|
+
const mergeCellsElement = buildMergeCellsElement(sheet.cells);
|
|
425
|
+
if (mergeCellsElement !== void 0) children.push(mergeCellsElement);
|
|
426
|
+
children.push(buildPrintOptionsElement(sheet.printSettings), buildPageMarginsElement(sheet.printSettings), buildPageSetupElement(sheet.printSettings));
|
|
427
|
+
const { rowBreaks, colBreaks } = buildBreaksElements(sheet.printSettings);
|
|
428
|
+
if (rowBreaks !== void 0) children.push(rowBreaks);
|
|
429
|
+
if (colBreaks !== void 0) children.push(colBreaks);
|
|
430
|
+
return xmlPart(require_xml_fragment.el("worksheet", {
|
|
431
|
+
xmlns: SML_NS,
|
|
432
|
+
"xmlns:r": REL_NS
|
|
433
|
+
}, children));
|
|
434
|
+
}
|
|
435
|
+
function buildXlsxPackage(document) {
|
|
436
|
+
if (document.kind !== "spreadsheet") throw new Error(`buildXlsxPackage: expected a ContentDocument of kind "spreadsheet", got "${document.kind}"`);
|
|
437
|
+
const sheets = document.sheets;
|
|
438
|
+
const sharedStrings = new require_typed_xlsx_shared_strings.SharedStringTable();
|
|
439
|
+
const worksheetParts = sheets.map((sheet) => buildWorksheetPart(sheet, sharedStrings));
|
|
440
|
+
const parts = {
|
|
441
|
+
"[Content_Types].xml": buildContentTypesPart(sheets.length),
|
|
442
|
+
"_rels/.rels": buildPackageRelsPart(),
|
|
443
|
+
"xl/workbook.xml": buildWorkbookPart(sheets),
|
|
444
|
+
"xl/_rels/workbook.xml.rels": buildWorkbookRelsPart(sheets.length),
|
|
445
|
+
"xl/styles.xml": buildStylesPart(),
|
|
446
|
+
"xl/sharedStrings.xml": buildSharedStringsPart(sharedStrings),
|
|
447
|
+
"docProps/core.xml": buildCorePropertiesPart(document.metadata),
|
|
448
|
+
"docProps/app.xml": buildAppPropertiesPart(document.metadata)
|
|
449
|
+
};
|
|
450
|
+
worksheetParts.forEach((part, index) => {
|
|
451
|
+
parts[`xl/worksheets/sheet${index + 1}.xml`] = part;
|
|
452
|
+
});
|
|
453
|
+
return { parts };
|
|
454
|
+
}
|
|
455
|
+
//#endregion
|
|
456
|
+
exports.buildXlsxPackage = buildXlsxPackage;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { r as Package } from "../../package-L24lkba-.cjs";
|
|
2
|
+
import { ContentDocument } from "document-schema.js";
|
|
3
|
+
//#region src/typed/xlsx/build.d.ts
|
|
4
|
+
declare function buildXlsxPackage(document: ContentDocument): Package;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { buildXlsxPackage };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { r as Package } from "../../package-BUojjTXf.js";
|
|
2
|
+
import { ContentDocument } from "document-schema.js";
|
|
3
|
+
//#region src/typed/xlsx/build.d.ts
|
|
4
|
+
declare function buildXlsxPackage(document: ContentDocument): Package;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { buildXlsxPackage };
|