@poe-platform/safe-bash 0.1.816 → 0.1.817
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/dist/pdf-ast/content/evaluator.d.ts +4 -0
- package/dist/pdf-ast/cos/value-parser.d.ts +2 -0
- package/dist/pdf-ast/fonts/resolve.d.ts +5 -1
- package/dist/pdf-ast/index.js +172 -165
- package/dist/safe-bash/command-chunks/biff-KLS4T7FP-UO3CXFFF.js +5581 -0
- package/dist/safe-bash/command-chunks/chunk-2J4OQT3F.js +153 -0
- package/dist/safe-bash/command-chunks/{chunk-K7VDCBXW.js → chunk-ABL2DPJI.js} +20 -20
- package/dist/safe-bash/command-chunks/{chunk-RINR7XPR.js → chunk-E64ZI2YB.js} +121 -4
- package/dist/safe-bash/command-chunks/{chunk-GEDO5V32.js → chunk-FSG6UC2N.js} +243 -105
- package/dist/safe-bash/command-chunks/{chunk-4QEJPP3K.js → chunk-S5X7PBO4.js} +1 -1
- package/dist/safe-bash/command-chunks/{chunk-IHLZ6HNQ.js → chunk-TSKJNCKD.js} +3 -2
- package/dist/safe-bash/command-chunks/{chunk-DBZCTL7C.js → chunk-UYZ6EFZE.js} +20 -18
- package/dist/safe-bash/command-chunks/{chunk-B2C3UPJS.js → chunk-W42SUPD6.js} +13 -1
- package/dist/safe-bash/command-chunks/chunk-ZHHALBM7.js +398 -0
- package/dist/safe-bash/command-chunks/{command-engine-GHE6QUHU.js → command-engine-2QXVRRH3.js} +8 -4
- package/dist/safe-bash/command-chunks/{engine-RG6HQCCB-FXYZS264.js → engine-T4GP6QOK-ECFKMR5V.js} +1 -1
- package/dist/safe-bash/command-chunks/odf-SL5TG4B3-XI3FNOTN.js +3041 -0
- package/dist/safe-bash/command-chunks/{xlsx-RE54MFCS-IQ6OXXKK.js → xlsx-RE54MFCS-4UZ5W3U7.js} +1 -1
- package/dist/safe-bash-command-apply-patch/apply.js +1 -1
- package/dist/safe-bash-command-apply-patch/index.js +1 -1
- package/dist/safe-bash-command-csvkit/index.js +1 -1
- package/dist/safe-bash-command-diff/diff.js +1 -1
- package/dist/safe-bash-command-diff/index.js +1 -1
- package/dist/safe-bash-command-pptx/engine.js +1 -1
- package/dist/safe-bash-command-ssconvert/index.js +5 -5
- package/dist/safe-bash-presentation-engine/index.js +1 -1
- package/dist/safe-bash-presentation-engine/retained-tags.d.ts +20 -0
- package/dist/safe-bash-presentation-engine/tags.d.ts +2 -0
- package/dist/safe-bash-presentation-engine/tags.js +11 -3
- package/dist/safe-bash-xml-engine/document.js +2 -2
- package/dist/safe-bash-xml-engine/index.js +2 -2
- package/dist/safe-bash-xml-engine/stored-document.d.ts +2 -0
- package/dist/safe-bash-xml-engine/stored-document.js +1 -1
- package/dist/safe-bash-xml-engine/stored-evaluate.js +2 -2
- package/dist/safe-bash-xml-engine/stored-namespaces.d.ts +21 -0
- package/dist/safe-bash-zip-engine/zip/safety.js +1 -1
- package/dist/safe-bash-zip-engine/zip/volumes.js +1 -1
- package/dist/spreadsheet-format-xls/biff-properties-merge.js +3 -3
- package/dist/spreadsheet-format-xls/biff-properties.d.ts +4 -2
- package/dist/spreadsheet-format-xls/biff-properties.js +141 -122
- package/dist/spreadsheet-format-xls/biff-property-names.d.ts +24 -0
- package/dist/spreadsheet-format-xls/biff-property-names.js +167 -0
- package/dist/xlsx-ast/comment-geometry.js +1 -1
- package/package.json +3 -2
- package/dist/safe-bash/command-chunks/biff-UBP2BZLK-JPODPKS3.js +0 -5448
- package/dist/safe-bash/command-chunks/chunk-O2HNOQQG.js +0 -161
- package/dist/safe-bash/command-chunks/chunk-ZUP5TBRG.js +0 -99
- package/dist/safe-bash/command-chunks/odf-3EA3EVSD-7B5GVNTC.js +0 -3097
|
@@ -0,0 +1,3041 @@
|
|
|
1
|
+
import {
|
|
2
|
+
I as I2,
|
|
3
|
+
X
|
|
4
|
+
} from "./chunk-2J4OQT3F.js";
|
|
5
|
+
import {
|
|
6
|
+
I,
|
|
7
|
+
T,
|
|
8
|
+
g,
|
|
9
|
+
l,
|
|
10
|
+
u
|
|
11
|
+
} from "./chunk-LNWAYODV.js";
|
|
12
|
+
import "./chunk-WHWIZ2B7.js";
|
|
13
|
+
import {
|
|
14
|
+
ZipStorageFailure,
|
|
15
|
+
createStoredZipEntries
|
|
16
|
+
} from "./chunk-37XCUS43.js";
|
|
17
|
+
import {
|
|
18
|
+
ZipDirectoryIndex,
|
|
19
|
+
ZipWriteChain,
|
|
20
|
+
createZipCodec
|
|
21
|
+
} from "./chunk-IOEUZ4EA.js";
|
|
22
|
+
import {
|
|
23
|
+
CodecError,
|
|
24
|
+
createCompressionCodec
|
|
25
|
+
} from "./chunk-E6SK3OU2.js";
|
|
26
|
+
import "./chunk-65DS4IOB.js";
|
|
27
|
+
|
|
28
|
+
// packages/safe-bash-command-ssconvert/dist/chunks/odf-SL5TG4B3.js
|
|
29
|
+
import { SsconvertError as En } from "../../spreadsheet-engine/contracts.js";
|
|
30
|
+
import { createAxisStorage as ai } from "../../spreadsheet-engine/workbook/axis-storage.js";
|
|
31
|
+
import { SsconvertError as gn } from "../../spreadsheet-engine/contracts.js";
|
|
32
|
+
import { IntegerTable as ni } from "@poe-platform/safe-fs/storage";
|
|
33
|
+
import { SsconvertError as yn } from "../../spreadsheet-engine/contracts.js";
|
|
34
|
+
import { createAxisStorage as Fi } from "../../spreadsheet-engine/workbook/axis-storage.js";
|
|
35
|
+
import { snapshotRecords as Ui } from "../../spreadsheet-ast/model.js";
|
|
36
|
+
import { encodeTextStream as oi } from "../../spreadsheet-engine/encoding/encode-stream.js";
|
|
37
|
+
import { ownWorkbookSource as Yi } from "../../spreadsheet-engine/workbook/source.js";
|
|
38
|
+
import { IntegerTable as ka } from "@poe-platform/safe-fs/storage";
|
|
39
|
+
import { encodeTextStream as xi } from "../../spreadsheet-engine/encoding/encode-stream.js";
|
|
40
|
+
import { ownedRangeSource as Hi } from "../../spreadsheet-engine/range-input.js";
|
|
41
|
+
import { SsconvertError as Wt } from "../../spreadsheet-engine/contracts.js";
|
|
42
|
+
import { parseXmlStream as Xi, XmlLimitError as vi } from "@poe-platform/safe-fs/xml";
|
|
43
|
+
import { SsconvertError as he } from "../../spreadsheet-engine/contracts.js";
|
|
44
|
+
import { MAX_SHEET_SIZE as me, DEFAULT_SHEET_SIZE as Pn, formatA1 as Fn } from "../../spreadsheet-ast/index.js";
|
|
45
|
+
import { foldSheetName as Ga } from "../../spreadsheet-ast/case-fold.js";
|
|
46
|
+
import { parseExpression as nn } from "../../spreadsheet-engine/formulas/parser.js";
|
|
47
|
+
import { quotedLabelText as Wi } from "../../spreadsheet-engine/formulas/quoted-labels.js";
|
|
48
|
+
import { SsconvertError as li } from "../../spreadsheet-engine/contracts.js";
|
|
49
|
+
import { parseExpression as ci } from "../../spreadsheet-engine/formulas/parser.js";
|
|
50
|
+
import { visitFormula as fi } from "../../spreadsheet-engine/formulas/rewriting.js";
|
|
51
|
+
import { recalculateWorkbook as di } from "../../spreadsheet-engine/formulas/evaluator.js";
|
|
52
|
+
import { visitFormula as Vi } from "../../spreadsheet-engine/formulas/rewriting.js";
|
|
53
|
+
import { gnumericGrammar as aa, odfGrammar as jt, internalOdfGrammar as zi, legacyOpenOfficeGrammar as ia } from "../../spreadsheet-engine/formulas/conventions.js";
|
|
54
|
+
import { serializeExpression as Ka, quoteNativeSheet as $i, quoteFormulaString as Xa } from "../../spreadsheet-engine/formulas/serialization.js";
|
|
55
|
+
import { translateOdfHyperlink as va } from "../../spreadsheet-engine/codecs/odf-hyperlinks.js";
|
|
56
|
+
import { dateSerial as ji, gregorian as Ki } from "../../spreadsheet-engine/formulas/functions/dates.js";
|
|
57
|
+
import { converterLocale as qi } from "../../spreadsheet-engine/locale/runtime.js";
|
|
58
|
+
import { formatA1 as vn } from "../../spreadsheet-ast/index.js";
|
|
59
|
+
import { parseExpression as Ti } from "../../spreadsheet-engine/formulas/parser.js";
|
|
60
|
+
import { odfGrammar as ui } from "../../spreadsheet-engine/formulas/conventions.js";
|
|
61
|
+
import { translateOdfHyperlink as Oi } from "../../spreadsheet-engine/codecs/odf-hyperlinks.js";
|
|
62
|
+
import { SsconvertError as La } from "../../spreadsheet-engine/contracts.js";
|
|
63
|
+
import { odfNamespaces as un } from "../../spreadsheet-engine/codecs/odf-write-support.js";
|
|
64
|
+
import { richTextSegments as Ei } from "../../spreadsheet-engine/codecs/rich-text-runs.js";
|
|
65
|
+
import { writeGnumericRichText as mi } from "../../spreadsheet-engine/codecs/gnumeric-rich-text.js";
|
|
66
|
+
import { SsconvertError as Si } from "../../spreadsheet-engine/contracts.js";
|
|
67
|
+
import { DEFAULT_SHEET_SIZE as Ni, MAX_SHEET_SIZE as wa } from "../../spreadsheet-ast/index.js";
|
|
68
|
+
import { parseExpression as Ai } from "../../spreadsheet-engine/formulas/parser.js";
|
|
69
|
+
import { odfGrammar as pi } from "../../spreadsheet-engine/formulas/conventions.js";
|
|
70
|
+
import { foldSheetName as $n } from "../../spreadsheet-ast/case-fold.js";
|
|
71
|
+
import { createOdfXml as Ji, odfObject as qe, odfAttributes as $t, odfChildren as Rt, odfNamespaces as Lt, odfEncryptionNamespace as Qi, upgradeOdfAnnotation as Zi } from "../../spreadsheet-engine/codecs/odf-write-support.js";
|
|
72
|
+
import { SsconvertError as Qn } from "../../spreadsheet-engine/contracts.js";
|
|
73
|
+
import { odfNamespaces as bi } from "../../spreadsheet-engine/codecs/odf-write-support.js";
|
|
74
|
+
import { exportOptionPairs as eo } from "../../spreadsheet-engine/cli/export-options.js";
|
|
75
|
+
import { renderCellText as to } from "../../spreadsheet-engine/formatting/cell-text.js";
|
|
76
|
+
import { encodeTextStream as hi } from "../../spreadsheet-engine/encoding/encode-stream.js";
|
|
77
|
+
import { SsconvertError as Zt } from "../../spreadsheet-engine/contracts.js";
|
|
78
|
+
import { parseFormatSections as yi } from "../../spreadsheet-engine/formatting/sections.js";
|
|
79
|
+
import { scanFormat as gi } from "../../spreadsheet-engine/formatting/numeric.js";
|
|
80
|
+
import { odfObject as pt, odfAttributes as Vt, odfChildren as en, odfNamespaces as Da } from "../../spreadsheet-engine/codecs/odf-write-support.js";
|
|
81
|
+
import { snapshotRecords as wi } from "../../spreadsheet-ast/model.js";
|
|
82
|
+
import { IntegerTable as Ci } from "@poe-platform/safe-fs/storage";
|
|
83
|
+
import { odfAttributes as ea, odfChildren as Ua, odfNamespaces as Dn, odfObject as Nn } from "../../spreadsheet-engine/codecs/odf-write-support.js";
|
|
84
|
+
import { odfAttributes as An, odfChildren as ta, odfObject as zt } from "../../spreadsheet-engine/codecs/odf-write-support.js";
|
|
85
|
+
import { formatA1 as Mi } from "../../spreadsheet-ast/index.js";
|
|
86
|
+
import { quoteFormulaString as Di } from "../../spreadsheet-engine/formulas/serialization.js";
|
|
87
|
+
import { odfGrammar as Bi } from "../../spreadsheet-engine/formulas/conventions.js";
|
|
88
|
+
import { translateOdfHyperlink as Pi } from "../../spreadsheet-engine/codecs/odf-hyperlinks.js";
|
|
89
|
+
import { serialDate as no } from "../../spreadsheet-engine/formulas/functions/dates.js";
|
|
90
|
+
import { readGnumericRichText as ao } from "../../spreadsheet-engine/codecs/gnumeric-rich-text.js";
|
|
91
|
+
function ua(n, t) {
|
|
92
|
+
let r, e = false, c, m = Promise.resolve(), f = /* @__PURE__ */ new WeakMap(), d = new Uint8Array(16384), i = new DataView(d.buffer), o = () => {
|
|
93
|
+
if (n.signal.throwIfAborted(), e) throw new En("invalid-request", "ODF XML storage is closed");
|
|
94
|
+
}, _ = () => (e = true, c ??= m.then(async () => {
|
|
95
|
+
d.fill(0), await r?.close();
|
|
96
|
+
}));
|
|
97
|
+
n.own(_), o();
|
|
98
|
+
try {
|
|
99
|
+
r = n.createWorkingStorage();
|
|
100
|
+
} catch (h) {
|
|
101
|
+
throw new ZipStorageFailure(h);
|
|
102
|
+
}
|
|
103
|
+
o();
|
|
104
|
+
function a(h) {
|
|
105
|
+
let R = m.then(async () => {
|
|
106
|
+
o();
|
|
107
|
+
try {
|
|
108
|
+
return await h();
|
|
109
|
+
} catch (N) {
|
|
110
|
+
throw new ZipStorageFailure(N);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
return m = R.then(() => {
|
|
114
|
+
}, () => {
|
|
115
|
+
}), R;
|
|
116
|
+
}
|
|
117
|
+
async function l2(h, R) {
|
|
118
|
+
return a(async () => {
|
|
119
|
+
let N = JSON.stringify(R, (w, s) => {
|
|
120
|
+
if (s instanceof Map) return [...s];
|
|
121
|
+
if (s && typeof s == "object" && "kind" in s && s.kind === "element") {
|
|
122
|
+
let O = s;
|
|
123
|
+
return { ...O, children: void 0, text: void 0, storedContent: f.get(O) };
|
|
124
|
+
}
|
|
125
|
+
return s;
|
|
126
|
+
}), y = r.allocate(16 + N.length * 2);
|
|
127
|
+
d.fill(0, 0, 16), i.setFloat64(8, N.length, true), await r.write(y, d.subarray(0, 16)), o();
|
|
128
|
+
for (let w = 0; w < N.length; w += 8192) {
|
|
129
|
+
let s = Math.min(8192, N.length - w);
|
|
130
|
+
for (let O = 0; O < s; O++) i.setUint16(O * 2, N.charCodeAt(w + O), true);
|
|
131
|
+
await r.write(y + 16 + w * 2, d.subarray(0, s * 2)), o();
|
|
132
|
+
}
|
|
133
|
+
let F = f.get(h);
|
|
134
|
+
F ? (i.setFloat64(0, y, true), await r.write(F.tail, d.subarray(0, 8)), o(), F.tail = y) : f.set(h, { head: y, tail: y });
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
async function u2(h) {
|
|
138
|
+
let R = await r.read(h, 16);
|
|
139
|
+
if (o(), R.length !== 16) throw new En("io", "Truncated ODF XML header");
|
|
140
|
+
let N = new DataView(R.buffer, R.byteOffset, 16), y = N.getFloat64(0, true), F = N.getFloat64(8, true);
|
|
141
|
+
if (!Number.isSafeInteger(y) || y < 0 || !Number.isSafeInteger(F) || F < 0 || F > (Number.MAX_SAFE_INTEGER - h - 16) / 2) throw new En("io", "Invalid ODF XML record");
|
|
142
|
+
let w = "";
|
|
143
|
+
for (let O = 0; O < F; O += 8192) {
|
|
144
|
+
let E = Math.min(8192, F - O), p = await r.read(h + 16 + O * 2, E * 2);
|
|
145
|
+
if (o(), p.length !== E * 2) throw new En("io", "Truncated ODF XML content");
|
|
146
|
+
let T2 = new DataView(p.buffer, p.byteOffset, p.byteLength), Y = [];
|
|
147
|
+
for (let C = 0; C < E; C++) Y.push(T2.getUint16(C * 2, true));
|
|
148
|
+
w += String.fromCharCode(...Y);
|
|
149
|
+
}
|
|
150
|
+
let s = JSON.parse(w, (O, E) => {
|
|
151
|
+
if (E && typeof E == "object" && "kind" in E && E.kind === "element") {
|
|
152
|
+
let { storedContent: p, ...T2 } = E, Y = { ...T2, namespaces: new Map(T2.namespaces), children: T2.content.filter((C) => C.kind === "element"), text: T2.content.filter((C) => C.kind === "text" || C.kind === "cdata").map((C) => C.text).join("") };
|
|
153
|
+
return p && f.set(Y, p), Y;
|
|
154
|
+
}
|
|
155
|
+
return E;
|
|
156
|
+
});
|
|
157
|
+
return { next: y, content: s };
|
|
158
|
+
}
|
|
159
|
+
async function* S(h) {
|
|
160
|
+
o();
|
|
161
|
+
let R = f.get(h);
|
|
162
|
+
if (R) {
|
|
163
|
+
let N = R.tail;
|
|
164
|
+
for (let y = R.head; ; ) {
|
|
165
|
+
let F = await a(() => u2(y));
|
|
166
|
+
if (yield* F.content, y === N) break;
|
|
167
|
+
if (F.next <= y) throw new En("io", "Invalid ODF XML chain");
|
|
168
|
+
y = F.next;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
yield* h.content, o();
|
|
172
|
+
}
|
|
173
|
+
async function* b(h) {
|
|
174
|
+
for await (let R of S(h)) R.kind === "element" && (yield R);
|
|
175
|
+
}
|
|
176
|
+
async function g2(h) {
|
|
177
|
+
let R = [];
|
|
178
|
+
for await (let N of S(h)) R.push(N.kind === "element" ? await g2(N) : N);
|
|
179
|
+
return { ...h, content: R, children: R.filter((N) => N.kind === "element"), text: R.filter((N) => N.kind === "text" || N.kind === "cdata").map((N) => N.text).join("") };
|
|
180
|
+
}
|
|
181
|
+
return { streamElements: { captureBefore: true, includeNested: true, matches(h, R) {
|
|
182
|
+
return !R || !t.includes(h.namespace) || !t.includes(R.namespace) ? false : R.localName === "table-row" ? ["table-cell", "covered-table-cell"].includes(h.localName) : ["table-row", "table-row-group", "table-header-rows", "table-rows"].includes(h.localName) && ["table", "table-row-group", "table-header-rows", "table-rows"].includes(R.localName);
|
|
183
|
+
}, async consume(h, R, N = []) {
|
|
184
|
+
await l2(R, [...N, h]);
|
|
185
|
+
} }, content: S, children: b, append: l2, materialize: g2, has: (h) => f.has(h), close: _ };
|
|
186
|
+
}
|
|
187
|
+
function Oa(n, t) {
|
|
188
|
+
let r = new ni(n, 128), e = new Uint8Array(16384), c = new DataView(e.buffer), m = false, f = Promise.resolve(), d = () => {
|
|
189
|
+
if (t.throwIfAborted(), m) throw new yn("invalid-request", "ODF cells are closed");
|
|
190
|
+
};
|
|
191
|
+
function i(a) {
|
|
192
|
+
let l2 = f.then(() => (d(), a()));
|
|
193
|
+
return f = l2.then(() => {
|
|
194
|
+
}, () => {
|
|
195
|
+
}), l2;
|
|
196
|
+
}
|
|
197
|
+
let o = (a) => BigInt(a) << 38n;
|
|
198
|
+
async function _(a) {
|
|
199
|
+
let l2 = Number(a), u2 = await n.read(l2, 8);
|
|
200
|
+
if (d(), u2.length !== 8) throw new yn("io", "Truncated ODF cell header");
|
|
201
|
+
let S = new DataView(u2.buffer, u2.byteOffset, 8).getFloat64(0, true);
|
|
202
|
+
if (!Number.isSafeInteger(S) || S < 0 || S > (Number.MAX_SAFE_INTEGER - l2 - 8) / 2) throw new yn("io", "Invalid ODF cell length");
|
|
203
|
+
let b = "";
|
|
204
|
+
for (let y = 0; y < S; y += 8192) {
|
|
205
|
+
let F = Math.min(8192, S - y), w = await n.read(l2 + 8 + y * 2, F * 2);
|
|
206
|
+
if (d(), w.length !== F * 2) throw new yn("io", "Truncated ODF cell");
|
|
207
|
+
let s = new DataView(w.buffer, w.byteOffset, w.byteLength), O = [];
|
|
208
|
+
for (let E = 0; E < F; E++) O.push(s.getUint16(E * 2, true));
|
|
209
|
+
b += String.fromCharCode(...O);
|
|
210
|
+
}
|
|
211
|
+
let [g2, A] = JSON.parse(b), h = 0, R = 0;
|
|
212
|
+
function N(y) {
|
|
213
|
+
if (!y || typeof y != "object") return;
|
|
214
|
+
let F = y;
|
|
215
|
+
for (let w of Object.keys(F)) typeof F[w] == "number" ? (A[R] === h && (F[w] = -0, R++), h++) : N(F[w]);
|
|
216
|
+
}
|
|
217
|
+
return A.length && N(g2), g2;
|
|
218
|
+
}
|
|
219
|
+
return { async close() {
|
|
220
|
+
m = true, await f, e.fill(0), r = void 0;
|
|
221
|
+
}, append(a, l2) {
|
|
222
|
+
d();
|
|
223
|
+
let u2 = 0, S = [], g2 = "[" + JSON.stringify(l2, (h, R) => (typeof R == "number" && (Object.is(R, -0) && S.push(u2), u2++), R)) + "," + JSON.stringify(S) + "]", A = o(a) | BigInt(l2.row) << 14n | BigInt(l2.column);
|
|
224
|
+
return i(async () => {
|
|
225
|
+
let h = n.allocate(8 + g2.length * 2);
|
|
226
|
+
c.setFloat64(0, g2.length, true), await n.write(h, e.subarray(0, 8)), d();
|
|
227
|
+
for (let R = 0; R < g2.length; R += 8192) {
|
|
228
|
+
let N = Math.min(8192, g2.length - R);
|
|
229
|
+
for (let y = 0; y < N; y++) c.setUint16(y * 2, g2.charCodeAt(R + y), true);
|
|
230
|
+
await n.write(h + 8 + R * 2, e.subarray(0, N * 2)), d();
|
|
231
|
+
}
|
|
232
|
+
await r.set(A, BigInt(h)), d();
|
|
233
|
+
});
|
|
234
|
+
}, async *cells(a) {
|
|
235
|
+
d();
|
|
236
|
+
let l2 = r.entries(o(a), o(a + 1));
|
|
237
|
+
try {
|
|
238
|
+
for (; ; ) {
|
|
239
|
+
let u2 = await i(async () => {
|
|
240
|
+
let S = await l2.next();
|
|
241
|
+
return d(), S.done ? void 0 : _(S.value[1]);
|
|
242
|
+
});
|
|
243
|
+
if (!u2) break;
|
|
244
|
+
yield u2;
|
|
245
|
+
}
|
|
246
|
+
d();
|
|
247
|
+
} finally {
|
|
248
|
+
await l2.return(void 0);
|
|
249
|
+
}
|
|
250
|
+
} };
|
|
251
|
+
}
|
|
252
|
+
function ma(n) {
|
|
253
|
+
let t, r, e = /* @__PURE__ */ new Map(), c = false, m, f;
|
|
254
|
+
if (n.own(() => (c = true, f ??= Promise.resolve().then(async () => {
|
|
255
|
+
await t?.close(), await r?.close(), await m?.close();
|
|
256
|
+
}))), c) throw new gn("invalid-request", "ODF source is closed");
|
|
257
|
+
try {
|
|
258
|
+
m = n.createWorkingStorage();
|
|
259
|
+
} catch (a) {
|
|
260
|
+
throw new ZipStorageFailure(a);
|
|
261
|
+
}
|
|
262
|
+
if (c) throw new gn("invalid-request", "ODF source is closed");
|
|
263
|
+
let d = m, i = Promise.resolve();
|
|
264
|
+
function o(a) {
|
|
265
|
+
let l2 = i.then(a);
|
|
266
|
+
return i = l2.then(() => {
|
|
267
|
+
}, () => {
|
|
268
|
+
}), l2;
|
|
269
|
+
}
|
|
270
|
+
let _ = { allocate(a) {
|
|
271
|
+
try {
|
|
272
|
+
return d.allocate(a);
|
|
273
|
+
} catch (l2) {
|
|
274
|
+
throw new ZipStorageFailure(l2);
|
|
275
|
+
}
|
|
276
|
+
}, read(a, l2) {
|
|
277
|
+
return o(async () => {
|
|
278
|
+
try {
|
|
279
|
+
return new Uint8Array(await d.read(a, l2));
|
|
280
|
+
} catch (u2) {
|
|
281
|
+
throw new ZipStorageFailure(u2);
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
}, write(a, l2) {
|
|
285
|
+
return o(async () => {
|
|
286
|
+
try {
|
|
287
|
+
await d.write(a, l2);
|
|
288
|
+
} catch (u2) {
|
|
289
|
+
throw new ZipStorageFailure(u2);
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
}, close: () => d.close() };
|
|
293
|
+
return t = Oa(_, n.signal), r = ai(_, n.signal), { cells: t, axes: r, sheets: e, workbook(a) {
|
|
294
|
+
let l2 = t, u2 = (b) => {
|
|
295
|
+
if (n.signal.throwIfAborted(), c) throw new gn("invalid-request", "ODF source is closed");
|
|
296
|
+
let g2 = e.get(b);
|
|
297
|
+
if (!g2) throw new gn("invalid-request", "Unknown ODF source sheet");
|
|
298
|
+
return g2;
|
|
299
|
+
};
|
|
300
|
+
function S(b) {
|
|
301
|
+
throw n.signal.throwIfAborted(), b instanceof ZipStorageFailure ? b.cause : b;
|
|
302
|
+
}
|
|
303
|
+
return { metadata: a, async *cells(b) {
|
|
304
|
+
try {
|
|
305
|
+
yield* l2.cells(u2(b).ordinal);
|
|
306
|
+
} catch (g2) {
|
|
307
|
+
return S(g2);
|
|
308
|
+
}
|
|
309
|
+
}, async *axes(b, g2) {
|
|
310
|
+
try {
|
|
311
|
+
yield* u2(b)[g2].values();
|
|
312
|
+
} catch (A) {
|
|
313
|
+
return S(A);
|
|
314
|
+
}
|
|
315
|
+
} };
|
|
316
|
+
} };
|
|
317
|
+
}
|
|
318
|
+
function wn(n, t, r) {
|
|
319
|
+
let e = t ? new ZipWriteChain(t, 16384, n.signal, async (o) => {
|
|
320
|
+
o.throwIfAborted();
|
|
321
|
+
}) : void 0, c = e ? new Uint8Array(16384) : void 0, m = [], f = 0, d = false;
|
|
322
|
+
function i() {
|
|
323
|
+
c?.fill(0), m.length = 0;
|
|
324
|
+
}
|
|
325
|
+
return n.own(i), { get hasContent() {
|
|
326
|
+
return d;
|
|
327
|
+
}, dispose: i, async append(o) {
|
|
328
|
+
n.signal.throwIfAborted();
|
|
329
|
+
async function* _() {
|
|
330
|
+
for (let a of typeof o == "string" ? [o] : o) n.signal.throwIfAborted(), a && (d = true, yield a);
|
|
331
|
+
}
|
|
332
|
+
if (!e) {
|
|
333
|
+
for await (let a of _()) m.push(a);
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
for await (let a of oi(_(), "UTF-8", false, n)) {
|
|
337
|
+
r(a.length);
|
|
338
|
+
for (let l2 = 0; l2 < a.length; ) {
|
|
339
|
+
let u2 = Math.min(c.length - f, a.length - l2);
|
|
340
|
+
c.set(a.subarray(l2, l2 + u2), f), f += u2, l2 += u2, f === c.length && (await e.append([c], f), f = 0);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}, async *render() {
|
|
344
|
+
if (n.signal.throwIfAborted(), !e) {
|
|
345
|
+
yield* m;
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
f && (await e.append([c.subarray(0, f)], f), f = 0), c.fill(0), yield* e.read();
|
|
349
|
+
} };
|
|
350
|
+
}
|
|
351
|
+
var Sa = "243f6a8885a308d313198a2e03707344a4093822299f31d0082efa98ec4e6c89452821e638d01377be5466cf34e90c6cc0ac29b7c97c50dd3f84d5b5b54709179216d5d98979fb1bd1310ba698dfb5ac2ffd72dbd01adfb7b8e1afed6a267e96ba7c9045f12c7f9924a19947b3916cf70801f2e2858efc16636920d871574e69a458fea3f4933d7e0d95748f728eb658718bcd5882154aee7b54a41dc25a59b59c30d5392af26013c5d1b023286085f0ca417918b8db38ef8e79dcb0603a180e6c9e0e8bb01e8a3ed71577c1bd314b2778af2fda55605c60e65525f3aa55ab945748986263e8144055ca396a2aab10b6b4cc5c341141e8cea15486af7c72e993b3ee1411636fbc2a2ba9c55d741831f6ce5c3e169b87931eafd6ba336c24cf5c7a325381289586773b8f48986b4bb9afc4bfe81b6628219361d809ccfb21a991487cac605dec8032ef845d5de98575b1dc262302eb651b8823893e81d396acc50f6d6ff383f442392e0b4482a484200469c8f04a9e1f9b5e21c66842f6e96c9a670c9c61abd388f06a51a0d2d8542f68960fa728ab5133a36eef0b6c137a3be4ba3bf0507efb2a98a1f1651d39af017666ca593e82430e888cee8619456f9fb47d84a5c33b8b5ebee06f75d885c12073401a449f56c16aa64ed3aa62363f77061bfedf72429b023d37d0d724d00a1248db0fead349f1c09b075372c980991b7b25d479d8f6e8def7e3fe501ab6794c3b976ce0bd04c006bac1a94fb6409f60c45e5c9ec2196a246368fb6faf3e6c53b51339b2eb3b52ec6f6dfc511f9b30952ccc814544af5ebd09bee3d004de334afd660f2807192e4bb3c0cba85745c8740fd20b5f39b9d3fbdb5579c0bd1a60320ad6a100c6402c7279679f25fefb1fa3cc8ea5e9f8db3222f83c7516dffd616b152f501ec8ad0552ab323db5fafd23876053317b483e00df829e5c57bbca6f8ca01a87562edf1769dbd542a8f6287effc3ac6732c68c4f5573695b27b0bbca58c8e1ffa35db8f011a010fa3d98fd2183b84afcb56c2dd1d35b9a53e479b6f84565d28e49bc4bfb9790e1ddf2daa4cb7e3362fb1341cee4c6e8ef20cada36774c01d07e9efe2bf11fb495dbda4dae909198eaad8e716b93d5a0d08ed1d0afc725e08e3c5b2f8e7594b78ff6e2fbf2122b648888b812900df01c4fad5ea0688fc31cd1cff191b3a8c1ad2f2f2218be0e1777ea752dfe8b021fa1e5a0cc0fb56f74e818acf3d6ce89e299b4a84fe0fd13e0b77cc43b81d2ada8d9165fa2668095770593cc7314211a1477e6ad206577b5fa86c75442f5fb9d35cfebcdaf0c7b3e89a0d6411bd3ae1e7e4900250e2d2071b35e226800bb57b8e0af2464369bf009b91e5563911d59dfa6aa78c14389d95a537f207d5ba202e5b9c5832603766295cfa911c819684e734a41b3472dca7b14a94a1b5100529a532915d60f573fbc9bc6e42b60a47681e6740008ba6fb5571be91ff296ec6b2a0dd915b6636521e7b9f9b6ff34052ec585566453b02d5da99f8fa108ba47996e85076a4b7a70e9b5b32944db75092ec4192623ad6ea6b049a7df7d9cee60b88fedb266ecaa8c71699a17ff5664526cc2b19ee1193602a575094c29a0591340e4183a3e3f54989a5b429d656b8fe4d699f73fd6a1d29c07efe830f54d2d38e6f0255dc14cdd20868470eb266382e9c6021ecc5e09686b3f3ebaefc93c9718146b6a70a1687f358452a0e286b79c5305aa5007373e07841c7fdeae5c8e7d44ec5716f2b8b03ada37f0500c0df01c1f040200b3ffae0cf51a3cb574b225837a58dc0921bdd19113f97ca92ff69432477322f547013ae5e58137c2dadcc8b576349af3dda7a94461460fd0030eecc8c73ea4751e41e238cd993bea0e2f3280bba1183eb3314e548b384f6db9086f420d03f60a04bf2cb8129024977c795679b072bcaf89afde9a771fd9930810b38bae12dccf3f2e5512721f2e6b7124501adde69f84cd877a5847187408da17bc9f9abce94b7d8cec7aec3adb851dfa63094366c464c3d2ef1c18473215d908dd433b3724c2ba1612a14d432a65c45150940002133ae4dd71dff89e10314e5581ac77d65f11199b043556f1d7a3c76b3c11183b5924a509f28fe6ed97f1fbfa9ebabf2c1e153c6e86e34570eae96fb1860e5e0a5a3e2ab3771fe71c4e3d06fa2965dcb999e71d0f803e89d65266c8252e4cc9789c10b36ac6150eba94e2ea78a5fc3c531e0a2df4f2f74ea7361d2b3d1939260f19c279605223a708f71312b6ebadfe6eeac31f66e3bc4595a67bc883b17f37d1018cff28c332ddefbe6c5aa56558218568ab9802eecea50fdb2f953b2aef7dad5b6e2f841521b62829076170ecdd4775619f151013cca830eb61bd960334fe1eaa0363cfb5735c904c70a239d59e9e0bcbaade14eecc86bc60622ca79cab5cabb2f3846e648b1eaf19bdf0caa02369b9655abb5040685a323c2ab4b3319ee9d5c021b8f79b540b19875fa09995f7997e623d7da8f837889a97e32d7711ed935f166812810e358829c7e61fd696dedfa17858ba9957f584a51b2272639b83c3ff1ac24696cdb30aeb532e30548fd948e46dbc312858ebf2ef34c6ffeafe28ed61ee7c3c735d4a14d9e864b7e342105d14203e13e045eee2b6a3aaabeadb6c4f15facb4fd0c742f442ef6abbb5654f3b1d41cd2105d81e799e86854dc7e44b476a3d816250cf62a1f25b8d2646fc8883a0c1c7b6a37f1524c369cb749247848a0b5692b285095bbf00ad19489d1462b17423820e0058428d2a0c55f5ea1dadf43e233f70613372f0928d937e41d65fecf16c223bdb7cde3759cbee74604085f2a7ce77326ea607808419f8509ee8efd85561d99735a969a7aac50c06c25a04abfc800bcadc9e447a2ec3453484fdd567050e1e9ec9db73dbd3105588cd675fda79e3674340c5c43465713e38d83d28f89ef16dff20153e21e78fb03d4ae6e39f2bdb83adf7e93d5a68948140f7f64c261c94692934411520f77602d4f7bcf46b2ed4a20068d40824713320f46a43b7d4b7500061af1e39f62e9724454614214f74bf8b88404d95fc1d96b591af70f4ddd366a02f45bfbc09ec03bd97857fac6dd031cb850496eb27b355fd3941da2547e6abca0a9a28507825530429f40a2c86dae9b66dfb68dc1462d7486900680ec0a427a18dee4f3ffea2e887ad8cb58ce0067af4d6b6aace1e7cd3375fecce78a399406b2a4220fe9e35d9f385b9ee39d7ab3b124e8b1dc9faf74b6d185626a36631eae397b23a6efa74dd5b43326841e7f7ca7820fbfb0af54ed8feb397454056acba48952755533a3a20838d87fe6ba9b7d096954b55a867bca1159a58cca9296399e1db33a62a4a563f3125f95ef47e1c9029317cfdf8e80204272f7080bb155c05282ce395c11548e4c66d2248c1133fc70f86dc07f9c9ee41041f0f404779a45d886e17325f51ebd59bc0d1f2bcc18f41113564257b7834602a9c60dff8e8a31f636c1b0e12b4c202e1329eaf664fd1cad181156b2395e0333e92e13b240b62eebeb92285b2a20ee6ba0d99de720c8c2da2f728d012784595b794fd647d0862e7ccf5f05449a36f877d48fac39dfd27f33e8d1e0a476341992eff743a6f6eabf4f8fd37a812dc60a1ebddf8991be14cdb6e6b0dc67b55106d672c372765d43bdcd0e804f1290dc7cc00ffa3b5390f92690fed0b667b9ffbcedb7d9ca091cf0bd9155ea3bb132f88515bad247b9479bf763bd6eb37392eb3cc1159798026e297f42e312d6842ada7c66a2b3b12754ccc782ef11c6a124237b79251e706a1bbe64bfb63501a6b101811caedfa3d25bdd8e2e1c3c9444216590a121386d90cec6ed5abea2a64af674eda86a85fbebfe98864e4c3fe9dbc8057f0f7c08660787bf86003604dd1fd8346f6381fb07745ae04d736fccc83426b33f01eab71b08041873c005e5f77a057bebde8ae2455464299bf582e614e58f48ff2ddfda2f474ef388789bdc25366f9c3c8b38e74b475f25546fcd9b97aeb26618b1ddf84846a0e79915f95e2466e598e20b457708cd55591c902de4cb90bace1bb8205d011a862487574a99eb77f19b6e0a9dc09662d09a1c4324633e85a1f0209f0be8c4a99a0251d6efe101ab93d1d0ba5a4dfa186f20f2868f169dcb7da83573906fea1e2ce9b4fcd7f5250115e01a70683faa002b5c40de6d0279af88c27773f8641c3604c0661a806b5f0177a28c0f586e0006058aa30dc7d6211e69ed72338ea6353c2dd94c2c21634bbcbee5690bcb6deebfc7da1ce591d766f05e4094b7c018839720a3d7c927c2486e3725f724d9db91ac15bb4d39eb8fced54557808fca5b5d83d7cd34dad0fc41e50ef5eb161e6f8a28514d96c51133c6fd5c7e756e14ec4362abfceddc6c837d79a323492638212670efa8e406000e03a39ce37d3faf5cfabc277375ac52d1b5cb0679e4fa33742d382274099bc9bbed5118e9dbf0f7315d62d1c7ec700c47bb78c1b6b21a19045b26eb1be6a366eb45748ab2fbc946e79c6a376d26549c2c8530ff8ee468dde7dd5730a1d4cd04dc62939bbdba9ba4650ac9526e8be5ee304a1fad5f06a2d519a63ef8ce29a86ee22c089c2b843242ef6a51e03aa9cf2d0a483c061ba9be96a4d8fe51550ba645bd62826a2f9a73a3ae14ba99586ef5562e9c72fefd3f752f7da3f046f6977fa0a5980e4a91587b086019b09e6ad3b3ee593e990fd5a9e34d7972cf0b7d9022b8b5196d5ac3a017da67dd1cf3ed67c7d2d281f9f25cfadf2b89b5ad6b4725a88f54ce029ac71e019a5e647b0acfded93fa9be8d3c48d283b57ccf8d5662979132e28785f0191ed756055f7960e44e3d35e8c15056dd488f46dba03a161250564f0bdc3eb9e153c9057a297271aeca93a072a1b3f6d9b1e6321f5f59c66fb26dcf3197533d928b155fdf5035634828aba3cbb28517711c20ad9f8abcc5167ccad925f4de817513830dc8e379d58629320f991ea7a90c2fb3e7bce5121ce64774fbe32a8b6e37ec3293d4648de53696413e680a2ae0810dd6db22469852dfd09072166b39a460a6445c0dd586cdecf1c20c8ae5bbef7dd1b588d40ccd2017f6bb4e3bbdda26a7e3a59ff453e350a44bcb4cdd572eacea8fa6484bb8d6612aebf3c6f47d29be463542f5d9eaec2771bf64e6370740e0d8de75b1357f8721671af537d5d4040cb084eb4e2cc34d2466a0115af84e1b0042895983a1d06b89fb4ce6ea0486f3f3b823520ab82011a1d4b277227f8611560b1e7933fdcbb3a792b344525bda08839e151ce794b2f32c9b7a01fbac9e01cc87ebcc7d1f6cf0111c3a1e8aac71a908749d44fbd9ad0dadecbd50ada380339c32ac69136678df9317ce0b12b4ff79e59b743f5bb3af2d519ff27d9459cbf97222c15e6fc2a0f91fc719b941525fae59361ceb69cebc2a8645912baa8d1b6c1075ee3056a0c10d25065cb03a442e0ec6e0e1698db3b4c98a0be3278e9649f1f9532e0d392dfd3a0342b8971f21e1b0a74414ba3348cc5be7120c37632d8df359f8d9b992f2ee60b6f470fe3f11de54cda541edad891ce6279cfcd3e7e6f1618b166fd2c1d05848fd2c5f6fb2299f523f357a632762393a8353156cccd02acf081625a75ebb56e16369788d273ccde96629281b949d04c50901b71c65614e6c6c7bd327a140a45e1d006c3f27b9ac9aa53fd62a80f00bb25bfe235bdd2f671126905b2040222b6cbcf7ccd769c2b53113ec01640e3d338abbd602547adf0ba38209cf746ce7677afa1c52075606085cbfe4e8ae88dd87aaaf9b04cf9aa7e1948c25c02fb8a8c01c36ae4d6ebe1f990d4f869a65cdea03f09252dc208e69fb74e6132ce77e25b578fdfe33ac372e6";
|
|
352
|
+
async function Tn(n, t, r, e, c, m = 1) {
|
|
353
|
+
if (e.throwIfAborted(), n.length < 4 || n.length > 56 || t.length !== 8) throw new TypeError("Invalid ODF Blowfish profile");
|
|
354
|
+
let f = new Uint32Array(1042), d = new Uint8Array(r.length);
|
|
355
|
+
for (let a = 0; a < f.length; a++) f[a] = Number.parseInt(Sa.slice(a * 8, a * 8 + 8), 16);
|
|
356
|
+
let i = f.subarray(0, 18), o = f.subarray(18);
|
|
357
|
+
function _(a, l2) {
|
|
358
|
+
for (let u2 = 0; u2 < 16; u2++) {
|
|
359
|
+
a = (a ^ i[u2]) >>> 0;
|
|
360
|
+
let S = ((o[a >>> 24] + o[256 + (a >>> 16 & 255)] | 0) ^ o[512 + (a >>> 8 & 255)]) + o[768 + (a & 255)] >>> 0, b = (l2 ^ S) >>> 0;
|
|
361
|
+
l2 = a, a = b;
|
|
362
|
+
}
|
|
363
|
+
return [(l2 ^ i[17]) >>> 0, (a ^ i[16]) >>> 0];
|
|
364
|
+
}
|
|
365
|
+
try {
|
|
366
|
+
for (let g2 = 0, A = 0; g2 < i.length; g2++) {
|
|
367
|
+
let h = 0;
|
|
368
|
+
for (let R = 0; R < 4; R++, A++) h = h << 8 | n[A % n.length];
|
|
369
|
+
i[g2] = i[g2] ^ h;
|
|
370
|
+
}
|
|
371
|
+
let a = 0, l2 = 0;
|
|
372
|
+
for (let g2 = 0; g2 < f.length; g2 += 2) e.throwIfAborted(), [a, l2] = _(a, l2), f[g2] = a, f[g2 + 1] = l2;
|
|
373
|
+
let u2 = new DataView(t.buffer, t.byteOffset, t.byteLength);
|
|
374
|
+
a = u2.getUint32(0), l2 = u2.getUint32(4);
|
|
375
|
+
let S = 0, b = 0;
|
|
376
|
+
for (let g2 = 0; g2 < r.length; g2++) {
|
|
377
|
+
e.throwIfAborted(), g2 % m === 0 && ([S, b] = _(a, l2));
|
|
378
|
+
let A = r[g2];
|
|
379
|
+
d[g2] = A ^ S >>> 24, S = (S << 8 | b >>> 24) >>> 0, b = b << 8 >>> 0;
|
|
380
|
+
let h = c === "encrypt" ? d[g2] : A;
|
|
381
|
+
a = (a << 8 | l2 >>> 24) >>> 0, l2 = (l2 << 8 | h) >>> 0, (g2 & 4095) === 4095 && await new Promise((R) => setTimeout(R, 0));
|
|
382
|
+
}
|
|
383
|
+
return e.throwIfAborted(), d;
|
|
384
|
+
} catch (a) {
|
|
385
|
+
throw d.fill(0), a;
|
|
386
|
+
} finally {
|
|
387
|
+
f.fill(0);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
var Cn = class {
|
|
391
|
+
oHash;
|
|
392
|
+
iHash;
|
|
393
|
+
blockLen;
|
|
394
|
+
outputLen;
|
|
395
|
+
canXOF = false;
|
|
396
|
+
finished = false;
|
|
397
|
+
destroyed = false;
|
|
398
|
+
constructor(t, r) {
|
|
399
|
+
if (I(t), u(r, void 0, "key"), this.iHash = t.create(), typeof this.iHash.update != "function") throw new Error("expected Hash instance");
|
|
400
|
+
this.blockLen = this.iHash.blockLen, this.outputLen = this.iHash.outputLen;
|
|
401
|
+
let e = this.blockLen, c = new Uint8Array(e);
|
|
402
|
+
c.set(r.length > e ? t.create().update(r).digest() : r);
|
|
403
|
+
for (let m = 0; m < c.length; m++) c[m] ^= 54;
|
|
404
|
+
this.iHash.update(c), this.oHash = t.create();
|
|
405
|
+
for (let m = 0; m < c.length; m++) c[m] ^= 106;
|
|
406
|
+
this.oHash.update(c), T(c);
|
|
407
|
+
}
|
|
408
|
+
update(t) {
|
|
409
|
+
return l(this), this.iHash.update(t), this;
|
|
410
|
+
}
|
|
411
|
+
digestInto(t) {
|
|
412
|
+
l(this), g(t, this), this.finished = true;
|
|
413
|
+
let r = t.subarray(0, this.outputLen);
|
|
414
|
+
this.iHash.digestInto(r), this.oHash.update(r), this.oHash.digestInto(r), this.destroy();
|
|
415
|
+
}
|
|
416
|
+
digest() {
|
|
417
|
+
let t = new Uint8Array(this.oHash.outputLen);
|
|
418
|
+
return this.digestInto(t), t;
|
|
419
|
+
}
|
|
420
|
+
_cloneInto(t) {
|
|
421
|
+
t ||= Object.create(Object.getPrototypeOf(this), {});
|
|
422
|
+
let { oHash: r, iHash: e, finished: c, destroyed: m, blockLen: f, outputLen: d, canXOF: i } = this;
|
|
423
|
+
return t = t, t.finished = c, t.destroyed = m, t.blockLen = f, t.outputLen = d, t.canXOF = i, t.oHash = r._cloneInto(t.oHash), t.iHash = e._cloneInto(t.iHash), t;
|
|
424
|
+
}
|
|
425
|
+
clone() {
|
|
426
|
+
return this._cloneInto();
|
|
427
|
+
}
|
|
428
|
+
destroy() {
|
|
429
|
+
this.destroyed = true, this.oHash.destroy(), this.iHash.destroy();
|
|
430
|
+
}
|
|
431
|
+
};
|
|
432
|
+
var Na = (() => {
|
|
433
|
+
let n = ((t, r, e) => new Cn(t, r).update(e).digest());
|
|
434
|
+
return n.create = (t, r) => new Cn(t, r), n;
|
|
435
|
+
})();
|
|
436
|
+
var it = "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0";
|
|
437
|
+
var Aa = /* @__PURE__ */ new Map([["SHA1", X], ["http://www.w3.org/2000/09/xmldsig#sha1", X], ["http://www.w3.org/2000/09/xmldsig#sha256", I2], ["http://www.w3.org/2001/04/xmlenc#sha256", I2]]);
|
|
438
|
+
var si = /* @__PURE__ */ new Map([["http://www.w3.org/2001/04/xmlenc#aes128-cbc", 16], ["http://www.w3.org/2001/04/xmlenc#aes192-cbc", 24], ["http://www.w3.org/2001/04/xmlenc#aes256-cbc", 32]]);
|
|
439
|
+
function De(n) {
|
|
440
|
+
throw new Wt("io", `E Invalid OpenDocument: ${n}`);
|
|
441
|
+
}
|
|
442
|
+
function Ke(n = "package") {
|
|
443
|
+
throw new Wt("unsupported-feature", `Unsupported ssconvert feature: encrypted OpenDocument ${n}`);
|
|
444
|
+
}
|
|
445
|
+
function ke(n, t, r = it) {
|
|
446
|
+
return n?.attributes.find((e) => e.namespace === r && e.localName === t)?.value;
|
|
447
|
+
}
|
|
448
|
+
function Hn(n, t, r = false) {
|
|
449
|
+
let e = n.children.filter((c) => c.namespace === it && c.localName === t);
|
|
450
|
+
return (e.length > 1 || !r && e.length !== 1) && De("invalid encryption declaration"), e[0];
|
|
451
|
+
}
|
|
452
|
+
function vt(n) {
|
|
453
|
+
let t = n?.trim(), r = t?.startsWith("+") ? t.slice(1) : t;
|
|
454
|
+
(!r || [...r].some((c) => c < "0" || c > "9")) && De("invalid encryption integer");
|
|
455
|
+
let e = Number(r);
|
|
456
|
+
if (!Number.isSafeInteger(e)) throw new Wt("resource-limit", "ssconvert OpenDocument encryption integer limit exceeded");
|
|
457
|
+
return e;
|
|
458
|
+
}
|
|
459
|
+
function kn(n, t) {
|
|
460
|
+
n === void 0 && De("missing encryption bytes");
|
|
461
|
+
let r = [...n].filter((c) => !` \r
|
|
462
|
+
`.includes(c)).join(""), e;
|
|
463
|
+
try {
|
|
464
|
+
e = atob(r), btoa(e) !== r && De("invalid encryption bytes");
|
|
465
|
+
} catch {
|
|
466
|
+
De("invalid encryption bytes");
|
|
467
|
+
}
|
|
468
|
+
return t !== void 0 && e.length !== t && De("invalid encryption byte length"), Uint8Array.from(e, (c) => c.charCodeAt(0));
|
|
469
|
+
}
|
|
470
|
+
async function Gn(n, t, r, e, c) {
|
|
471
|
+
let m = new Uint8Array(e), f = new Uint8Array(t.length + 4), d = new DataView(f.buffer);
|
|
472
|
+
f.set(t);
|
|
473
|
+
let i = Na.create(X, n), o;
|
|
474
|
+
try {
|
|
475
|
+
for (let _ = 1, a = 0; a < e; _++, a += 20) {
|
|
476
|
+
d.setUint32(t.length, _), o = i.clone().update(f).digest();
|
|
477
|
+
let l2 = m.subarray(a, Math.min(a + 20, e));
|
|
478
|
+
l2.set(o.subarray(0, l2.length));
|
|
479
|
+
for (let u2 = 1; u2 < r; u2++) {
|
|
480
|
+
c.signal.throwIfAborted();
|
|
481
|
+
let S = i.clone().update(o).digest();
|
|
482
|
+
o.fill(0), o = S;
|
|
483
|
+
for (let b = 0; b < l2.length; b++) l2[b] = l2[b] ^ o[b];
|
|
484
|
+
(u2 & 255) === 0 && await new Promise((b) => setTimeout(b, 0));
|
|
485
|
+
}
|
|
486
|
+
o.fill(0), o = void 0;
|
|
487
|
+
}
|
|
488
|
+
return c.signal.throwIfAborted(), m;
|
|
489
|
+
} catch (_) {
|
|
490
|
+
throw m.fill(0), _;
|
|
491
|
+
} finally {
|
|
492
|
+
i.destroy(), o?.fill(0), f.fill(0);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
async function pa(n, t, r, e, c, m, f) {
|
|
496
|
+
e.password || Ke(), n.namespace !== it && Ke("manifest revision");
|
|
497
|
+
let d = await t.has("encrypted-package");
|
|
498
|
+
if (d) {
|
|
499
|
+
let A = 0;
|
|
500
|
+
for (let h of ["mimetype", "META-INF/manifest.xml", "encrypted-package"]) await t.has(h) && A++;
|
|
501
|
+
(n.children.length !== 1 || A !== t.size) && De("ambiguous encrypted package");
|
|
502
|
+
}
|
|
503
|
+
let i = [], o = /* @__PURE__ */ new Set(), _ = 0;
|
|
504
|
+
for (let A of n.children) {
|
|
505
|
+
if (c(), A.namespace !== it || A.localName !== "file-entry") continue;
|
|
506
|
+
let h = ke(A, "full-path");
|
|
507
|
+
(!h || o.has(h)) && De("ambiguous manifest member"), o.add(h);
|
|
508
|
+
}
|
|
509
|
+
for (let A of n.children) {
|
|
510
|
+
c();
|
|
511
|
+
let h = A.children.filter((ye) => ye.localName === "encryption-data");
|
|
512
|
+
if (!h.length) continue;
|
|
513
|
+
(h.length !== 1 || A.namespace !== it || A.localName !== "file-entry" || h[0].namespace !== it) && De("invalid encryption declaration");
|
|
514
|
+
let R = ke(A, "full-path");
|
|
515
|
+
(!R || R === "mimetype" || R === "META-INF/manifest.xml" || !await t.has(R)) && De("invalid encrypted member");
|
|
516
|
+
let N = await t.get(R), y = h[0], F = Hn(y, "algorithm"), w = Hn(y, "key-derivation"), s = ke(F, "algorithm-name") ?? "", O = s === "Blowfish CFB" || s === it + "#blowfish", E = s === "http://www.w3.org/2009/xmlenc11#aes256-gcm";
|
|
517
|
+
(d !== E || E && R !== "encrypted-package") && Ke("encryption algorithm");
|
|
518
|
+
let p = E ? "aes-gcm" : O ? "blowfish-cfb8" : "aes-cbc", T2 = E ? 32 : O ? vt(ke(w, "key-size") ?? "16") : si.get(s);
|
|
519
|
+
T2 === void 0 && Ke("encryption algorithm"), O && (T2 < 4 || T2 > 56) && Ke("encryption key size"), (N.method !== 0 || N.size === 0 || p === "aes-cbc" && N.size % 16 || E && N.size < 28) && De("invalid encrypted member framing");
|
|
520
|
+
let Y = ke(w, "key-derivation-name");
|
|
521
|
+
(E ? Y !== "urn:org:documentfoundation:names:experimental:office:manifest:argon2id" : Y !== "PBKDF2" && Y !== it + "#pbkdf2") && Ke("key derivation"), vt(ke(w, "key-size") ?? "16") !== T2 && De("inconsistent encryption key size");
|
|
522
|
+
let C = "urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0", I3 = vt(E ? ke(w, "argon2-iterations", C) : ke(w, "iteration-count"));
|
|
523
|
+
I3 || De("invalid encryption iteration count");
|
|
524
|
+
let M = E ? vt(ke(w, "argon2-memory", C)) : 0, x = E ? vt(ke(w, "argon2-lanes", C)) : 0, W = E ? 4 * x * Math.floor(M / (4 * x)) * 1024 : 0;
|
|
525
|
+
if (E && ((!x || x >= 2 ** 24 || M < 8 * x || M >= 2 ** 32 || I3 >= 2 ** 32) && De("invalid Argon2 parameters"), W >= 2 ** 32 || W > (e.limits.encryptionMemoryBytes ?? 1 / 0))) throw new Wt("resource-limit", "ssconvert OpenDocument encryption memory limit exceeded");
|
|
526
|
+
let v = vt(ke(A, "size"));
|
|
527
|
+
if (v > f || v > (e.limits.zipRatio ?? 1 / 0) * N.size) throw new Wt("resource-limit", "ssconvert OpenDocument decrypted entry limit exceeded");
|
|
528
|
+
if (_ += v + N.size, !Number.isSafeInteger(_) || _ > m) throw new Wt("resource-limit", "ssconvert OpenDocument decrypted bytes limit exceeded");
|
|
529
|
+
let ne = Hn(y, "start-key-generation", true), K = Aa.get(ke(ne, "start-key-generation-name") ?? "SHA1");
|
|
530
|
+
K || Ke("start key algorithm"), E && K !== I2 && Ke("start key algorithm"), vt(ke(ne, "key-size") ?? "20") !== K.outputLen && De("inconsistent start key size");
|
|
531
|
+
let G = ke(y, "checksum-type") ?? "SHA1/1K", j = G === "SHA1/1K" || G === it + "#sha1-1k" ? X : G === it + "#sha256-1k" ? I2 : Aa.get(G);
|
|
532
|
+
!E && !j && Ke("checksum algorithm"), E && (ke(y, "checksum") !== void 0 || ke(y, "checksum-type") !== void 0) && De("unexpected authenticated checksum");
|
|
533
|
+
let ue = E ? void 0 : kn(ke(y, "checksum"), j.outputLen), ve = kn(ke(F, "initialisation-vector"), E ? 12 : O ? 8 : 16), ze = kn(ke(w, "salt"));
|
|
534
|
+
if ((!ze.length || E && ze.length < 8) && De("invalid encryption salt"), c((E ? M * I3 * 1024 : I3 * Math.ceil(T2 / 20) * 128) + (O ? (N.size + Math.ceil(N.size / 8) + 1042) * 128 : N.size * 4) + v + ze.length * Math.ceil(T2 / 20)), E) {
|
|
535
|
+
let ye = await r(R);
|
|
536
|
+
ve.every((Q, Ye) => ye[Ye] === Q) || De("inconsistent encrypted package IV");
|
|
537
|
+
}
|
|
538
|
+
i.push({ path: R, cipher: p, keyBytes: T2, iterations: I3, memory: M, lanes: x, arenaBytes: W, size: v, startHash: K, checksumHash: j, checksum: ue, iv: ve, salt: ze, prefixChecksum: G === "SHA1/1K" || G === it + "#sha1-1k" || G === it + "#sha256-1k" });
|
|
539
|
+
}
|
|
540
|
+
let a = /* @__PURE__ */ new Map();
|
|
541
|
+
if (!i.length) return a;
|
|
542
|
+
e.own(() => {
|
|
543
|
+
for (let A of a.values()) A.fill(0);
|
|
544
|
+
});
|
|
545
|
+
let l2 = i[0].cipher, u2 = i.every((A) => A.cipher === l2) ? l2 : "mixed", S = e.limits.inputBytes;
|
|
546
|
+
e.signal.throwIfAborted();
|
|
547
|
+
let b;
|
|
548
|
+
try {
|
|
549
|
+
b = await e.password.read(Object.freeze({ format: "odf", algorithm: u2, revision: d ? "libreoffice" : "1.2", encoding: "utf8", maxBytes: S, signal: e.signal, ...e.inputFilename === void 0 ? {} : { inputFilename: e.inputFilename } }));
|
|
550
|
+
} catch {
|
|
551
|
+
e.signal.throwIfAborted(), Ke("password acquisition failed");
|
|
552
|
+
}
|
|
553
|
+
e.signal.throwIfAborted(), b === void 0 && Ke("password required"), (typeof b == "string" ? b.length > S : !(b instanceof Uint8Array) || b.length > S) && Ke("password encoding or length"), typeof b == "string" && [...b].some((A) => {
|
|
554
|
+
let h = A.codePointAt(0);
|
|
555
|
+
return h >= 55296 && h <= 57343;
|
|
556
|
+
}) && Ke("password encoding or length");
|
|
557
|
+
let g2 = typeof b == "string" ? new TextEncoder().encode(b) : new Uint8Array(b);
|
|
558
|
+
try {
|
|
559
|
+
g2.length > S && Ke("password encoding or length");
|
|
560
|
+
try {
|
|
561
|
+
new TextDecoder("UTF-8", { fatal: true }).decode(g2);
|
|
562
|
+
} catch {
|
|
563
|
+
Ke("password encoding or length");
|
|
564
|
+
}
|
|
565
|
+
for (let A of i) {
|
|
566
|
+
let h = A.startHash(g2), R, N;
|
|
567
|
+
try {
|
|
568
|
+
let [{ cbc: y, gcm: F }, { argon2idAsync: w }] = await Promise.all([import("./aes-DUEAWV73-LZOSUFMR.js"), import("./argon2-WTUGKGHD-C2NVNIFH.js")]);
|
|
569
|
+
R = A.cipher === "aes-gcm" ? await w(h, A.salt, { t: A.iterations, m: A.memory, p: A.lanes, dkLen: A.keyBytes, version: 19, maxmem: A.arenaBytes, asyncTick: 10 }) : await Gn(h, A.salt, A.iterations, A.keyBytes, e), e.signal.throwIfAborted();
|
|
570
|
+
let s = await r(A.path), O = 0;
|
|
571
|
+
if (A.cipher === "aes-gcm") try {
|
|
572
|
+
N = F(R, A.iv).decrypt(s.subarray(12));
|
|
573
|
+
} catch {
|
|
574
|
+
De("encrypted content could not be verified");
|
|
575
|
+
}
|
|
576
|
+
else if (A.cipher === "blowfish-cfb8") N = await Tn(R, A.iv, s, e.signal, "decrypt");
|
|
577
|
+
else {
|
|
578
|
+
N = new Uint8Array(s.length);
|
|
579
|
+
let I3 = A.iv;
|
|
580
|
+
for (let M = 0; M < s.length; M += 16384) {
|
|
581
|
+
e.signal.throwIfAborted();
|
|
582
|
+
let x = s.subarray(M, Math.min(M + 16384, s.length)), W = y(R, I3, { disablePadding: true }).decrypt(x);
|
|
583
|
+
try {
|
|
584
|
+
N.set(W, M);
|
|
585
|
+
} finally {
|
|
586
|
+
W.fill(0);
|
|
587
|
+
}
|
|
588
|
+
I3 = x.subarray(x.length - 16), M && await new Promise((v) => setTimeout(v, 0));
|
|
589
|
+
}
|
|
590
|
+
O = N[N.length - 1], (O < 1 || O > 16) && De("encrypted content could not be verified");
|
|
591
|
+
}
|
|
592
|
+
let E = N.subarray(0, N.length - O);
|
|
593
|
+
if (A.cipher !== "aes-gcm") {
|
|
594
|
+
let I3 = A.checksumHash(A.prefixChecksum ? E.subarray(0, 1024) : E), M = 0;
|
|
595
|
+
for (let x = 0; x < I3.length; x++) M |= I3[x] ^ A.checksum[x];
|
|
596
|
+
if (M && A.cipher === "blowfish-cfb8") {
|
|
597
|
+
N.fill(0), N = await Tn(R, A.iv, s, e.signal, "decrypt", 8), E = N, I3 = A.checksumHash(A.prefixChecksum ? E.subarray(0, 1024) : E), M = 0;
|
|
598
|
+
for (let x = 0; x < I3.length; x++) M |= I3[x] ^ A.checksum[x];
|
|
599
|
+
}
|
|
600
|
+
M && De("encrypted content could not be verified");
|
|
601
|
+
}
|
|
602
|
+
let p = createCompressionCodec(), T2 = new p.CodecReader((async function* () {
|
|
603
|
+
yield E;
|
|
604
|
+
})(), e.signal), Y = new Uint8Array(A.size), C = 0;
|
|
605
|
+
try {
|
|
606
|
+
for await (let I3 of p.codec(T2, { mode: "inflate-raw", chunkSize: 16384 }, e.signal)) I3.length > Y.length - C && De("encrypted content could not be verified"), Y.set(I3, C), C += I3.length;
|
|
607
|
+
(C !== Y.length || await T2.chunk() !== void 0) && De("encrypted content could not be verified");
|
|
608
|
+
} catch (I3) {
|
|
609
|
+
if (Y.fill(0), e.signal.throwIfAborted(), I3 instanceof Wt) throw I3;
|
|
610
|
+
De("encrypted content could not be verified");
|
|
611
|
+
} finally {
|
|
612
|
+
await T2.close(), N.fill(0);
|
|
613
|
+
}
|
|
614
|
+
a.set(A.path, Y);
|
|
615
|
+
} finally {
|
|
616
|
+
h.fill(0), R?.fill(0), N?.fill(0);
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
return a;
|
|
620
|
+
} catch (A) {
|
|
621
|
+
for (let h of a.values()) h.fill(0);
|
|
622
|
+
throw A;
|
|
623
|
+
} finally {
|
|
624
|
+
g2.fill(0);
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
function Ra(n, t, r) {
|
|
628
|
+
let e = /* @__PURE__ */ new Map(), c = [];
|
|
629
|
+
if (!n.sheets.some((i) => i.cells.some((o) => (r(), (o.formula || o.formulaGroup) && (n.automaticLabelLookup || i.labelRanges?.some((_) => (r(), o.row >= _.labels.startRow && o.row <= _.labels.endRow && o.column >= _.labels.startColumn && o.column <= _.labels.endColumn))))))) return { book: n, documents: e };
|
|
630
|
+
n = { ...n, sheets: n.sheets.map((i) => ({ ...i, cells: i.cells.map((o) => (r(), (o.formula || o.formulaGroup) && o.cachedResult ? { ...o, value: o.cachedResult } : o)) })) };
|
|
631
|
+
function f(i, o) {
|
|
632
|
+
r(i.length);
|
|
633
|
+
let _ = ci(i, { position: o, workbook: n, signal: t.signal, onWork: r, maximumLength: t.limits.workbookTextBytes ?? t.limits.outputBytes, maximumNodes: t.limits.workbookNodes ?? 1 / 0 });
|
|
634
|
+
if (!_.ok) return;
|
|
635
|
+
let a = false;
|
|
636
|
+
fi(_.document.root, (l2) => {
|
|
637
|
+
r(), l2.kind === "reference" && l2.label && (a = true);
|
|
638
|
+
}), a && (e.set(JSON.stringify([o.sheet, o.row, o.column, i]), _.document), c.push(o));
|
|
639
|
+
}
|
|
640
|
+
for (let i of n.sheets) for (let o of i.cells) r(), o.formula && f(o.formula, { sheet: i.id, row: o.row, column: o.column });
|
|
641
|
+
for (let i of n.names ?? []) {
|
|
642
|
+
r();
|
|
643
|
+
let o = n.sheets.find((_) => _.id === (i.position?.sheet ?? i.sheet) || _.name === (i.position?.sheet ?? i.sheet)) ?? n.sheets[0];
|
|
644
|
+
o && f(i.expression, { sheet: o.id, row: i.position?.row ?? 0, column: i.position?.column ?? 0 });
|
|
645
|
+
}
|
|
646
|
+
if (!c.length) return { book: n, documents: e };
|
|
647
|
+
let d = [];
|
|
648
|
+
return n = { ...n, sheets: n.sheets.map((i) => ({ ...i, cells: i.cells.map((o) => {
|
|
649
|
+
if (r(), !o.formula && !o.formulaGroup) return o;
|
|
650
|
+
let _ = i.labelRanges?.some((u2) => (r(), o.row >= u2.labels.startRow && o.row <= u2.labels.endRow && o.column >= u2.labels.startColumn && o.column <= u2.labels.endColumn));
|
|
651
|
+
if (!c.some((u2) => (r(), (u2.sheet !== i.id || u2.row !== o.row || u2.column !== o.column) && (_ || n.automaticLabelLookup && u2.sheet === i.id)))) return o;
|
|
652
|
+
let l2 = o.formulaGroup && i.formulaGroups?.some((u2) => (r(), u2.id === o.formulaGroup && u2.kind === "array"));
|
|
653
|
+
return (n.calculationMode !== "manual" || l2) && d.push({ sheet: i.id, row: o.row, column: o.column }), o;
|
|
654
|
+
}) })) }, d.length && (n = di(n, t, { force: false, queueVolatile: false }, void 0, { target: d, tick: r, onCycle() {
|
|
655
|
+
if (!n.iteration?.enabled) throw new li("unsupported-feature", "Unsupported ssconvert feature: circular formula label in OpenDocument output");
|
|
656
|
+
} })), { book: n, documents: e };
|
|
657
|
+
}
|
|
658
|
+
var ba = { opendoc_content_dtd: `START OFFICE OO_NS_OFFICE document-content
|
|
659
|
+
OFFICE SCRIPT OO_NS_OFFICE scripts
|
|
660
|
+
OFFICE OFFICE_FONTS OO_NS_OFFICE font-face-decls
|
|
661
|
+
OFFICE_FONTS FONT_FACE OO_NS_STYLE font-face
|
|
662
|
+
OFFICE OFFICE_STYLES OO_NS_OFFICE automatic-styles
|
|
663
|
+
OFFICE_STYLES PAGE_LAYOUT OO_NS_STYLE page-layout
|
|
664
|
+
PAGE_LAYOUT PAGE_LAYOUT_PROPS OO_NS_STYLE page-layout-properties
|
|
665
|
+
PAGE_LAYOUT_PROPS BACK_IMAGE OO_NS_STYLE background-image
|
|
666
|
+
PAGE_LAYOUT HEADER_STYLE OO_NS_STYLE header-style
|
|
667
|
+
HEADER_STYLE HEADER_PROPERTIES OO_NS_STYLE header-footer-properties
|
|
668
|
+
HEADER_PROPERTIES HF_BACK_IMAGE OO_NS_STYLE background-image
|
|
669
|
+
PAGE_LAYOUT FOOTER_STYLE OO_NS_STYLE footer-style
|
|
670
|
+
FOOTER_STYLE FOOTER_PROPERTIES OO_NS_STYLE header-footer-properties
|
|
671
|
+
FOOTER_PROPERTIES HF_BACK_IMAGE OO_NS_STYLE background-image
|
|
672
|
+
OFFICE_STYLES STYLE OO_NS_STYLE style
|
|
673
|
+
STYLE TABLE_CELL_PROPS OO_NS_STYLE table-cell-properties
|
|
674
|
+
STYLE TABLE_COL_PROPS OO_NS_STYLE table-column-properties
|
|
675
|
+
STYLE TABLE_ROW_PROPS OO_NS_STYLE table-row-properties
|
|
676
|
+
STYLE CHART_PROPS OO_NS_STYLE chart-properties
|
|
677
|
+
STYLE TEXT_PROPS OO_NS_STYLE text-properties
|
|
678
|
+
STYLE TABLE_PROPS OO_NS_STYLE table-properties
|
|
679
|
+
STYLE PARAGRAPH_PROPS OO_NS_STYLE paragraph-properties
|
|
680
|
+
PARAGRAPH_PROPS PARA_TABS OO_NS_STYLE tab-stops
|
|
681
|
+
STYLE GRAPHIC_PROPS OO_NS_STYLE graphic-properties
|
|
682
|
+
STYLE STYLE_MAP OO_NS_STYLE map
|
|
683
|
+
OFFICE_STYLES NUMBER_STYLE OO_NS_NUMBER number-style
|
|
684
|
+
NUMBER_STYLE NUMBER_STYLE_NUMBERFILL_CHARACTER OO_NS_LOCALC_EXT fill-character
|
|
685
|
+
NUMBER_STYLE LOEXT_TEXT OO_NS_LOCALC_EXT text
|
|
686
|
+
NUMBER_STYLE NUMBER_STYLE_NUMBER OO_NS_NUMBER number
|
|
687
|
+
NUMBER_STYLE_NUMBER NUMBER_EMBEDDED_TEXT OO_NS_NUMBER embedded-text
|
|
688
|
+
NUMBER_STYLE NUMBER_STYLE_TEXT OO_NS_NUMBER text
|
|
689
|
+
NUMBER_STYLE NUMBER_STYLE_FRACTION OO_NS_NUMBER fraction
|
|
690
|
+
NUMBER_STYLE NUMBER_SCI_STYLE_PROP OO_NS_NUMBER scientific-number
|
|
691
|
+
NUMBER_STYLE NUMBER_MAP OO_NS_STYLE map
|
|
692
|
+
NUMBER_STYLE NUMBER_TEXT_PROP OO_NS_STYLE text-properties
|
|
693
|
+
NUMBER_STYLE NUMBER_FILL_CHARACTER OO_NS_NUMBER fill-character
|
|
694
|
+
OFFICE_STYLES DATE_STYLE OO_NS_NUMBER date-style
|
|
695
|
+
DATE_STYLE DATE_DAY OO_NS_NUMBER day
|
|
696
|
+
DATE_STYLE DATE_MONTH OO_NS_NUMBER month
|
|
697
|
+
DATE_STYLE DATE_YEAR OO_NS_NUMBER year
|
|
698
|
+
DATE_STYLE DATE_ERA OO_NS_NUMBER era
|
|
699
|
+
DATE_STYLE DATE_DAY_OF_WEEK OO_NS_NUMBER day-of-week
|
|
700
|
+
DATE_STYLE DATE_WEEK_OF_YEAR OO_NS_NUMBER week-of-year
|
|
701
|
+
DATE_STYLE DATE_QUARTER OO_NS_NUMBER quarter
|
|
702
|
+
DATE_STYLE DATE_HOURS OO_NS_NUMBER hours
|
|
703
|
+
DATE_STYLE DATE_MINUTES OO_NS_NUMBER minutes
|
|
704
|
+
DATE_STYLE DATE_SECONDS OO_NS_NUMBER seconds
|
|
705
|
+
DATE_STYLE DATE_AM_PM OO_NS_NUMBER am-pm
|
|
706
|
+
DATE_STYLE DATE_TEXT OO_NS_NUMBER text
|
|
707
|
+
DATE_STYLE DATE_TEXT_PROP OO_NS_STYLE text-properties
|
|
708
|
+
DATE_STYLE DATE_MAP OO_NS_STYLE map
|
|
709
|
+
DATE_STYLE DATE_FILL_CHARACTER OO_NS_NUMBER fill-character
|
|
710
|
+
OFFICE_STYLES TIME_STYLE OO_NS_NUMBER time-style
|
|
711
|
+
TIME_STYLE TIME_HOURS OO_NS_NUMBER hours
|
|
712
|
+
TIME_STYLE TIME_MINUTES OO_NS_NUMBER minutes
|
|
713
|
+
TIME_STYLE TIME_SECONDS OO_NS_NUMBER seconds
|
|
714
|
+
TIME_STYLE TIME_AM_PM OO_NS_NUMBER am-pm
|
|
715
|
+
TIME_STYLE TIME_TEXT OO_NS_NUMBER text
|
|
716
|
+
TIME_STYLE TIME_TEXT_PROP OO_NS_STYLE text-properties
|
|
717
|
+
TIME_STYLE TIME_MAP OO_NS_STYLE map
|
|
718
|
+
TIME_STYLE TIME_FILL_CHARACTER OO_NS_NUMBER fill-character
|
|
719
|
+
OFFICE_STYLES STYLE_BOOL OO_NS_NUMBER boolean-style
|
|
720
|
+
STYLE_BOOL BOOL_PROP OO_NS_NUMBER boolean
|
|
721
|
+
OFFICE_STYLES STYLE_CURRENCY OO_NS_NUMBER currency-style
|
|
722
|
+
STYLE_CURRENCY CURRENCY_STYLE OO_NS_NUMBER number
|
|
723
|
+
STYLE_CURRENCY CURRENCY_STYLE_PROP OO_NS_STYLE properties
|
|
724
|
+
STYLE_CURRENCY CURRENCY_MAP OO_NS_STYLE map
|
|
725
|
+
STYLE_CURRENCY CURRENCY_SYMBOL OO_NS_NUMBER currency-symbol
|
|
726
|
+
STYLE_CURRENCY CURRENCY_TEXT OO_NS_NUMBER text
|
|
727
|
+
STYLE_CURRENCY CURRENCY_TEXT_PROP OO_NS_STYLE text-properties
|
|
728
|
+
STYLE_CURRENCY CURRENCY_FILL_CHARACTER OO_NS_NUMBER fill-character
|
|
729
|
+
OFFICE_STYLES STYLE_PERCENTAGE OO_NS_NUMBER percentage-style
|
|
730
|
+
STYLE_PERCENTAGE PERCENTAGE_STYLE_PROP OO_NS_NUMBER number
|
|
731
|
+
STYLE_PERCENTAGE PERCENTAGE_TEXT OO_NS_NUMBER text
|
|
732
|
+
STYLE_PERCENTAGE PERCENTAGE_MAP OO_NS_STYLE map
|
|
733
|
+
STYLE_PERCENTAGE PERCENTAGE_TEXT_PROP OO_NS_STYLE text-properties
|
|
734
|
+
STYLE_PERCENTAGE PERCENTAGE_FILL_CHARACTER OO_NS_NUMBER fill-character
|
|
735
|
+
OFFICE_STYLES STYLE_TEXT OO_NS_NUMBER text-style
|
|
736
|
+
STYLE_TEXT STYLE_TEXT_CONTENT OO_NS_NUMBER text-content
|
|
737
|
+
STYLE_TEXT STYLE_TEXT_PROP OO_NS_NUMBER text
|
|
738
|
+
STYLE_TEXT STYLE_TEXT_MAP OO_NS_STYLE map
|
|
739
|
+
OFFICE OFFICE_BODY OO_NS_OFFICE body
|
|
740
|
+
OFFICE_BODY SPREADSHEET OO_NS_OFFICE spreadsheet
|
|
741
|
+
SPREADSHEET DATA_PILOT_TABLES OO_NS_TABLE data-pilot-tables
|
|
742
|
+
DATA_PILOT_TABLES DATA_PILOT_TABLE OO_NS_TABLE data-pilot-table
|
|
743
|
+
DATA_PILOT_TABLE DPT_SOURCE_CELL_RANGE OO_NS_TABLE source-cell-range
|
|
744
|
+
DATA_PILOT_TABLE DATA_PILOT_FIELD OO_NS_TABLE data-pilot-field
|
|
745
|
+
DATA_PILOT_FIELD DATA_PILOT_LEVEL OO_NS_TABLE data-pilot-level
|
|
746
|
+
DATA_PILOT_LEVEL DATA_PILOT_LAYOUT_INFO OO_NS_TABLE data-pilot-layout-info
|
|
747
|
+
DATA_PILOT_LEVEL DATA_PILOT_SORT_INFO OO_NS_TABLE data-pilot-sort-info
|
|
748
|
+
DATA_PILOT_LEVEL DATA_PILOT_DISPLAY_INFO OO_NS_TABLE data-pilot-display-info
|
|
749
|
+
DATA_PILOT_LEVEL DATA_PILOT_MEMBERS OO_NS_TABLE data-pilot-members
|
|
750
|
+
DATA_PILOT_MEMBERS DATA_PILOT_MEMBER OO_NS_TABLE data-pilot-member
|
|
751
|
+
DATA_PILOT_LEVEL DATA_PILOT_SUBTOTALS OO_NS_TABLE data-pilot-subtotals
|
|
752
|
+
DATA_PILOT_SUBTOTALS DATA_PILOT_SUBTOTAL OO_NS_TABLE data-pilot-subtotal
|
|
753
|
+
DATA_PILOT_FIELD DATA_PILOT_GROUPS OO_NS_TABLE data-pilot-groups
|
|
754
|
+
SPREADSHEET CONTENT_VALIDATIONS OO_NS_TABLE content-validations
|
|
755
|
+
CONTENT_VALIDATIONS CONTENT_VALIDATION OO_NS_TABLE content-validation
|
|
756
|
+
CONTENT_VALIDATION ERROR_MESSAGE OO_NS_TABLE error-message
|
|
757
|
+
ERROR_MESSAGE TEXT_CONTENT OO_NS_TEXT p
|
|
758
|
+
TEXT_CONTENT TEXT_S OO_NS_TEXT s
|
|
759
|
+
TEXT_CONTENT TEXT_LINE_BREAK OO_NS_TEXT line-break
|
|
760
|
+
TEXT_CONTENT TEXT_TAB OO_NS_TEXT tab
|
|
761
|
+
TEXT_CONTENT TEXT_SPAN OO_NS_TEXT span
|
|
762
|
+
TEXT_SPAN TEXT_SPAN OO_NS_TEXT span
|
|
763
|
+
TEXT_SPAN TEXT_S OO_NS_TEXT s
|
|
764
|
+
TEXT_SPAN TEXT_LINE_BREAK OO_NS_TEXT line-break
|
|
765
|
+
TEXT_SPAN TEXT_TAB OO_NS_TEXT tab
|
|
766
|
+
TEXT_SPAN TEXT_ADDR OO_NS_TEXT a
|
|
767
|
+
TEXT_ADDR TEXT_S OO_NS_TEXT s
|
|
768
|
+
TEXT_ADDR TEXT_LINE_BREAK OO_NS_TEXT line-break
|
|
769
|
+
TEXT_ADDR TEXT_TAB OO_NS_TEXT tab
|
|
770
|
+
TEXT_ADDR TEXT_SPAN OO_NS_TEXT span
|
|
771
|
+
CONTENT_VALIDATION HELP_MESSAGE OO_NS_TABLE help-message
|
|
772
|
+
HELP_MESSAGE TEXT_CONTENT OO_NS_TEXT p
|
|
773
|
+
SPREADSHEET CALC_SETTINGS OO_NS_TABLE calculation-settings
|
|
774
|
+
CALC_SETTINGS ITERATION OO_NS_TABLE iteration
|
|
775
|
+
CALC_SETTINGS DATE_CONVENTION OO_NS_TABLE null-date
|
|
776
|
+
SPREADSHEET CHART OO_NS_CHART chart
|
|
777
|
+
OFFICE_BODY OFFICE_CHART OO_NS_OFFICE chart
|
|
778
|
+
OFFICE_CHART CHART_CHART OO_NS_CHART chart
|
|
779
|
+
CHART_CHART CHART_TABLE OO_NS_TABLE table
|
|
780
|
+
CHART_TABLE CHART_TABLE_ROWS OO_NS_TABLE table-rows
|
|
781
|
+
CHART_TABLE_ROWS CHART_TABLE_ROW OO_NS_TABLE table-row
|
|
782
|
+
CHART_TABLE_ROW CHART_TABLE_CELL OO_NS_TABLE table-cell
|
|
783
|
+
CHART_TABLE_CELL CHART_CELL_P OO_NS_TEXT p
|
|
784
|
+
CHART_TABLE_CELL CHART_CELL_DRAW_G OO_NS_DRAW g
|
|
785
|
+
CHART_CELL_DRAW_G CHART_CELL_SVG_DESC OO_NS_SVG desc
|
|
786
|
+
CHART_TABLE CHART_TABLE_COLS OO_NS_TABLE table-columns
|
|
787
|
+
CHART_TABLE_COLS CHART_TABLE_COL OO_NS_TABLE table-column
|
|
788
|
+
CHART_TABLE CHART_TABLE_HROWS OO_NS_TABLE table-header-rows
|
|
789
|
+
CHART_TABLE_HROWS CHART_TABLE_HROW OO_NS_TABLE table-header-row
|
|
790
|
+
CHART_TABLE_HROWS CHART_TABLE_ROW OO_NS_TABLE table-row
|
|
791
|
+
CHART_TABLE CHART_TABLE_HCOLS OO_NS_TABLE table-header-columns
|
|
792
|
+
CHART_TABLE_HCOLS CHART_TABLE_HCOL OO_NS_TABLE table-header-column
|
|
793
|
+
CHART_TABLE_HCOLS CHART_TABLE_COL OO_NS_TABLE table-column
|
|
794
|
+
CHART_CHART CHART_TITLE OO_NS_CHART title
|
|
795
|
+
CHART_TITLE TEXT_CONTENT OO_NS_TEXT p
|
|
796
|
+
CHART_CHART CHART_SUBTITLE OO_NS_CHART subtitle
|
|
797
|
+
CHART_SUBTITLE TEXT_CONTENT OO_NS_TEXT p
|
|
798
|
+
CHART_CHART CHART_FOOTER OO_NS_CHART footer
|
|
799
|
+
CHART_FOOTER TEXT_CONTENT OO_NS_TEXT p
|
|
800
|
+
CHART_CHART CHART_LEGEND OO_NS_CHART legend
|
|
801
|
+
CHART_LEGEND CHART_LEGEND_TITLE OO_GNUM_NS_EXT title
|
|
802
|
+
CHART_LEGEND_TITLE TEXT_CONTENT OO_NS_TEXT p
|
|
803
|
+
CHART_CHART CHART_COLOR_SCALE OO_GNUM_NS_EXT color-scale
|
|
804
|
+
CHART_CHART CHART_PLOT_AREA OO_NS_CHART plot-area
|
|
805
|
+
CHART_PLOT_AREA CHART_SERIES OO_NS_CHART series
|
|
806
|
+
CHART_SERIES SERIES_DOMAIN OO_NS_CHART domain
|
|
807
|
+
CHART_SERIES SERIES_DATA_PT OO_NS_CHART data-point
|
|
808
|
+
CHART_SERIES SERIES_DATA_ERR OO_NS_CHART error-indicator
|
|
809
|
+
CHART_SERIES SERIES_REGRESSION OO_NS_CHART regression-curve
|
|
810
|
+
SERIES_REGRESSION SERIES_REG_EQ OO_NS_CHART equation
|
|
811
|
+
SERIES_REGRESSION SERIES_REG_EQ_GNM OO_GNUM_NS_EXT equation
|
|
812
|
+
CHART_SERIES SERIES_REGRESSION_MULTIPLE OO_GNUM_NS_EXT regression-curve
|
|
813
|
+
SERIES_REGRESSION_MULTIPLE SERIES_REG_EQ OO_NS_CHART equation
|
|
814
|
+
SERIES_REGRESSION_MULTIPLE SERIES_REG_EQ_GNM OO_GNUM_NS_EXT equation
|
|
815
|
+
CHART_SERIES SERIES_DROPLINES OO_GNUM_NS_EXT droplines
|
|
816
|
+
CHART_SERIES SERIES_SERIESLINES OO_GNUM_NS_EXT serieslines
|
|
817
|
+
CHART_PLOT_AREA CHART_WALL OO_NS_CHART wall
|
|
818
|
+
CHART_PLOT_AREA CHART_FLOOR OO_NS_CHART floor
|
|
819
|
+
CHART_PLOT_AREA CHART_AXIS OO_NS_CHART axis
|
|
820
|
+
CHART_PLOT_AREA GNM_CHART_AXIS OO_GNUM_NS_EXT axis
|
|
821
|
+
CHART_AXIS CHART_AXIS_LINE OO_GNUM_NS_EXT axisline
|
|
822
|
+
CHART_AXIS CHART_GRID OO_NS_CHART grid
|
|
823
|
+
CHART_AXIS CHART_AXIS_CAT OO_NS_CHART categories
|
|
824
|
+
CHART_AXIS CHART_AXIS_TITLE OO_NS_CHART title
|
|
825
|
+
GNM_CHART_AXIS GNM_CHART_AXIS_LINE OO_GNUM_NS_EXT axisline
|
|
826
|
+
GNM_CHART_AXIS GNM_CHART_GRID OO_NS_CHART grid
|
|
827
|
+
GNM_CHART_AXIS GNM_CHART_AXIS_CAT OO_NS_CHART categories
|
|
828
|
+
GNM_CHART_AXIS GNM_CHART_AXIS_TITLE OO_NS_CHART title
|
|
829
|
+
CHART_AXIS_TITLE TEXT_CONTENT OO_NS_TEXT p
|
|
830
|
+
CHART_PLOT_AREA CHART_OOO_COORDINATE_REGION OO_NS_CHART_OOO coordinate-region
|
|
831
|
+
SPREADSHEET TABLE OO_NS_TABLE table
|
|
832
|
+
TABLE SHEET_SELECTIONS OO_GNUM_NS_EXT selections
|
|
833
|
+
SHEET_SELECTIONS SELECTION OO_GNUM_NS_EXT selection
|
|
834
|
+
TABLE TABLE_SOURCE OO_NS_TABLE table-source
|
|
835
|
+
TABLE TABLE_SHAPES OO_NS_TABLE shapes
|
|
836
|
+
TABLE_SHAPES DRAW_CONTROL_SHAPES OO_NS_DRAW control
|
|
837
|
+
TABLE_SHAPES DRAW_FRAME OO_NS_DRAW frame
|
|
838
|
+
TABLE_SHAPES DRAW_CAPTION OO_NS_DRAW caption
|
|
839
|
+
DRAW_CAPTION TEXT_CONTENT OO_NS_TEXT p
|
|
840
|
+
TABLE_SHAPES DRAW_CUSTOM_SHAPE OO_NS_DRAW custom-shape
|
|
841
|
+
DRAW_CUSTOM_SHAPE TEXT_CONTENT OO_NS_TEXT p
|
|
842
|
+
DRAW_CUSTOM_SHAPE DRAW_ENHANCED_GEOMETRY OO_NS_DRAW enhanced-geometry
|
|
843
|
+
DRAW_ENHANCED_GEOMETRY DRAW_ENHANCED_GEOMETRY_EQUATION OO_NS_DRAW equation
|
|
844
|
+
DRAW_ENHANCED_GEOMETRY DRAW_ENHANCED_GEOMETRY_HANDLE OO_NS_DRAW handle
|
|
845
|
+
TABLE_SHAPES DRAW_ELLIPSE OO_NS_DRAW ellipse
|
|
846
|
+
DRAW_ELLIPSE TEXT_CONTENT OO_NS_TEXT p
|
|
847
|
+
TABLE_SHAPES DRAW_LINE OO_NS_DRAW line
|
|
848
|
+
DRAW_LINE TEXT_CONTENT OO_NS_TEXT p
|
|
849
|
+
TABLE_SHAPES DRAW_RECT OO_NS_DRAW rect
|
|
850
|
+
DRAW_RECT TEXT_CONTENT OO_NS_TEXT p
|
|
851
|
+
TABLE FORMS OO_NS_OFFICE forms
|
|
852
|
+
FORMS FORM OO_NS_FORM form
|
|
853
|
+
FORM FORM_PROPERTIES OO_NS_FORM properties
|
|
854
|
+
FORM_PROPERTIES FORM_PROPERTY OO_NS_FORM property
|
|
855
|
+
FORM_PROPERTIES FORM_LIST_PROPERTY OO_NS_FORM list-property
|
|
856
|
+
FORM FORM_BUTTON OO_NS_FORM button
|
|
857
|
+
FORM_BUTTON FORM_PROPERTIES OO_NS_FORM properties
|
|
858
|
+
FORM_BUTTON BUTTON_OFFICE_EVENT_LISTENERS OO_NS_OFFICE event-listeners
|
|
859
|
+
BUTTON_OFFICE_EVENT_LISTENERS BUTTON_EVENT_LISTENER OO_NS_SCRIPT event-listener
|
|
860
|
+
FORM FORM_VALUE_RANGE OO_NS_FORM value-range
|
|
861
|
+
FORM_VALUE_RANGE FORM_PROPERTIES OO_NS_FORM properties
|
|
862
|
+
FORM FORM_CHECKBOX OO_NS_FORM checkbox
|
|
863
|
+
FORM_CHECKBOX FORM_PROPERTIES OO_NS_FORM properties
|
|
864
|
+
FORM FORM_RADIO OO_NS_FORM radio
|
|
865
|
+
FORM_RADIO FORM_PROPERTIES OO_NS_FORM properties
|
|
866
|
+
FORM FORM_LISTBOX OO_NS_FORM listbox
|
|
867
|
+
FORM_LISTBOX FORM_PROPERTIES OO_NS_FORM properties
|
|
868
|
+
FORM FORM_COMBOBOX OO_NS_FORM combobox
|
|
869
|
+
FORM_COMBOBOX FORM_PROPERTIES OO_NS_FORM properties
|
|
870
|
+
FORM FORM_GENERIC OO_NS_FORM generic-control
|
|
871
|
+
FORM_GENERIC FORM_PROPERTIES OO_NS_FORM properties
|
|
872
|
+
TABLE TABLE_ROWS OO_NS_TABLE table-rows
|
|
873
|
+
TABLE TABLE_H_ROWS OO_NS_TABLE table-header-rows
|
|
874
|
+
TABLE TABLE_COL OO_NS_TABLE table-column
|
|
875
|
+
TABLE TABLE_COLS OO_NS_TABLE table-columns
|
|
876
|
+
TABLE TABLE_H_COLS OO_NS_TABLE table-header-columns
|
|
877
|
+
TABLE_H_COLS TABLE_COL OO_NS_TABLE table-column
|
|
878
|
+
TABLE_COLS TABLE_COL OO_NS_TABLE table-column
|
|
879
|
+
TABLE TABLE_ROW OO_NS_TABLE table-row
|
|
880
|
+
TABLE SOFTPAGEBREAK OO_NS_TEXT soft-page-break
|
|
881
|
+
TABLE_ROWS TABLE_ROW OO_NS_TABLE table-row
|
|
882
|
+
TABLE_H_ROWS TABLE_ROW OO_NS_TABLE table-row
|
|
883
|
+
TABLE_ROWS SOFTPAGEBREAK OO_NS_TEXT soft-page-break
|
|
884
|
+
TABLE_H_ROWS SOFTPAGEBREAK OO_NS_TEXT soft-page-break
|
|
885
|
+
TABLE_ROW TABLE_CELL OO_NS_TABLE table-cell
|
|
886
|
+
TABLE_CELL DETECTIVE OO_NS_TABLE detective
|
|
887
|
+
DETECTIVE DETECTIVE_OPERATION OO_NS_TABLE operation
|
|
888
|
+
TABLE_CELL DRAW_CUSTOM_SHAPE OO_NS_DRAW custom-shape
|
|
889
|
+
TABLE_CELL CELL_TEXT OO_NS_TEXT p
|
|
890
|
+
CELL_TEXT DRAW_CUSTOM_SHAPE OO_NS_DRAW custom-shape
|
|
891
|
+
CELL_TEXT TEXT_S OO_NS_TEXT s
|
|
892
|
+
CELL_TEXT TEXT_ADDR OO_NS_TEXT a
|
|
893
|
+
CELL_TEXT TEXT_LINE_BREAK OO_NS_TEXT line-break
|
|
894
|
+
CELL_TEXT TEXT_TAB OO_NS_TEXT tab
|
|
895
|
+
CELL_TEXT TEXT_SPAN OO_NS_TEXT span
|
|
896
|
+
TABLE_CELL CELL_OBJECT OO_NS_DRAW object
|
|
897
|
+
TABLE_CELL CELL_GRAPHIC OO_NS_DRAW g
|
|
898
|
+
CELL_GRAPHIC CELL_GRAPHIC OO_NS_DRAW g
|
|
899
|
+
CELL_GRAPHIC DRAW_POLYLINE OO_NS_DRAW polyline
|
|
900
|
+
CELL_GRAPHIC DRAW_CONTROL OO_NS_DRAW control
|
|
901
|
+
TABLE_CELL DRAW_CONTROL OO_NS_DRAW control
|
|
902
|
+
TABLE_CELL DRAW_RECT OO_NS_DRAW rect
|
|
903
|
+
TABLE_CELL DRAW_LINE OO_NS_DRAW line
|
|
904
|
+
TABLE_CELL DRAW_ELLIPSE OO_NS_DRAW ellipse
|
|
905
|
+
TABLE_CELL DRAW_FRAME OO_NS_DRAW frame
|
|
906
|
+
DRAW_FRAME DRAW_OBJECT OO_NS_DRAW object
|
|
907
|
+
DRAW_OBJECT DRAW_OBJECT_TEXT OO_NS_TEXT p
|
|
908
|
+
DRAW_FRAME DRAW_IMAGE OO_NS_DRAW image
|
|
909
|
+
DRAW_IMAGE DRAW_IMAGE_TEXT OO_NS_TEXT p
|
|
910
|
+
DRAW_FRAME SVG_DESC OO_NS_SVG desc
|
|
911
|
+
DRAW_FRAME SVG_TITLE OO_NS_SVG title
|
|
912
|
+
DRAW_FRAME DRAW_TEXT_BOX OO_NS_DRAW text-box
|
|
913
|
+
DRAW_TEXT_BOX TEXT_CONTENT OO_NS_TEXT p
|
|
914
|
+
TABLE_CELL CELL_ANNOTATION OO_NS_OFFICE annotation
|
|
915
|
+
CELL_ANNOTATION TEXT_CONTENT OO_NS_TEXT p
|
|
916
|
+
CELL_ANNOTATION CELL_ANNOTATION_AUTHOR OO_NS_DC creator
|
|
917
|
+
CELL_ANNOTATION CELL_ANNOTATION_DATE OO_NS_DC date
|
|
918
|
+
CELL_ANNOTATION CELL_ANNOTATION_DATE_STRING OO_NS_META date-string
|
|
919
|
+
TABLE_ROW TABLE_COVERED_CELL OO_NS_TABLE covered-table-cell
|
|
920
|
+
TABLE_COVERED_CELL COVERED_CELL_TEXT OO_NS_TEXT p
|
|
921
|
+
COVERED_CELL_TEXT COVERED_CELL_TEXT_S OO_NS_TEXT s
|
|
922
|
+
TABLE_COVERED_CELL DRAW_CONTROL OO_NS_DRAW control
|
|
923
|
+
TABLE TABLE_COL_GROUP OO_NS_TABLE table-column-group
|
|
924
|
+
TABLE_COL_GROUP TABLE_COL_GROUP OO_NS_TABLE table-column-group
|
|
925
|
+
TABLE_COL_GROUP TABLE_H_COLS OO_NS_TABLE table-header-columns
|
|
926
|
+
TABLE_COL_GROUP TABLE_COL OO_NS_TABLE table-column
|
|
927
|
+
TABLE_ROW_GROUP TABLE_ROW_GROUP OO_NS_TABLE table-row-group
|
|
928
|
+
TABLE TABLE_ROW_GROUP OO_NS_TABLE table-row-group
|
|
929
|
+
TABLE_ROW_GROUP TABLE_ROW OO_NS_TABLE table-row
|
|
930
|
+
TABLE NAMED_EXPRS OO_NS_TABLE named-expressions
|
|
931
|
+
SPREADSHEET NAMED_EXPRS OO_NS_TABLE named-expressions
|
|
932
|
+
SPREADSHEET LABEL_RANGES OO_NS_TABLE label-ranges
|
|
933
|
+
LABEL_RANGES LABEL_RANGE OO_NS_TABLE label-range
|
|
934
|
+
NAMED_EXPRS NAMED_EXPR OO_NS_TABLE named-expression
|
|
935
|
+
NAMED_EXPRS NAMED_RANGE OO_NS_TABLE named-range
|
|
936
|
+
SPREADSHEET DB_RANGES OO_NS_TABLE database-ranges
|
|
937
|
+
DB_RANGES DB_RANGE OO_NS_TABLE database-range
|
|
938
|
+
DB_RANGE FILTER OO_NS_TABLE filter
|
|
939
|
+
FILTER FILTER_COND OO_NS_TABLE filter-condition
|
|
940
|
+
FILTER FILTER_AND OO_NS_TABLE filter-and
|
|
941
|
+
FILTER_AND FILTER_OR OO_NS_TABLE filter-or
|
|
942
|
+
FILTER_OR FILTER_COND_IGNORE OO_NS_TABLE filter-condition
|
|
943
|
+
FILTER_OR FILTER_AND_IGNORE OO_NS_TABLE filter-or
|
|
944
|
+
FILTER_AND FILTER_COND OO_NS_TABLE filter-condition
|
|
945
|
+
FILTER FILTER_OR OO_NS_TABLE filter-or
|
|
946
|
+
DB_RANGE TABLE_SORT OO_NS_TABLE sort
|
|
947
|
+
TABLE_SORT SORT_BY OO_NS_TABLE sort-by`, ooo1_content_dtd: `START OFFICE OO_NS_OFFICE document-content
|
|
948
|
+
OFFICE SCRIPT OO_NS_OFFICE script
|
|
949
|
+
OFFICE OFFICE_FONTS OO_NS_OFFICE font-decls
|
|
950
|
+
OFFICE_FONTS FONT_DECL OO_NS_STYLE font-decl
|
|
951
|
+
OFFICE OFFICE_STYLES OO_NS_OFFICE automatic-styles
|
|
952
|
+
OFFICE_STYLES PAGE_MASTER OO_NS_STYLE page-master
|
|
953
|
+
OFFICE_STYLES STYLE OO_NS_STYLE style
|
|
954
|
+
STYLE STYLE_PROP OO_NS_STYLE properties
|
|
955
|
+
STYLE_PROP STYLE_TAB_STOPS OO_NS_STYLE tab-stops
|
|
956
|
+
OFFICE_STYLES NUMBER_STYLE OO_NS_NUMBER number-style
|
|
957
|
+
NUMBER_STYLE NUMBER_STYLE_NUMBER OO_NS_NUMBER number
|
|
958
|
+
NUMBER_STYLE NUMBER_STYLE_TEXT OO_NS_NUMBER text
|
|
959
|
+
NUMBER_STYLE NUMBER_STYLE_FRACTION OO_NS_NUMBER fraction
|
|
960
|
+
NUMBER_STYLE NUMBER_SCI_STYLE_PROP OO_NS_NUMBER scientific-number
|
|
961
|
+
NUMBER_STYLE NUMBER_STYLE_PROP OO_NS_STYLE properties
|
|
962
|
+
NUMBER_STYLE NUMBER_MAP OO_NS_STYLE map
|
|
963
|
+
NUMBER_STYLE NUMBER_FILL_CHARACTER OO_NS_NUMBER fill-character
|
|
964
|
+
OFFICE_STYLES DATE_STYLE OO_NS_NUMBER date-style
|
|
965
|
+
DATE_STYLE DATE_DAY OO_NS_NUMBER day
|
|
966
|
+
DATE_STYLE DATE_MONTH OO_NS_NUMBER month
|
|
967
|
+
DATE_STYLE DATE_YEAR OO_NS_NUMBER year
|
|
968
|
+
DATE_STYLE DATE_ERA OO_NS_NUMBER era
|
|
969
|
+
DATE_STYLE DATE_DAY_OF_WEEK OO_NS_NUMBER day-of-week
|
|
970
|
+
DATE_STYLE DATE_WEEK_OF_YEAR OO_NS_NUMBER week-of-year
|
|
971
|
+
DATE_STYLE DATE_QUARTER OO_NS_NUMBER quarter
|
|
972
|
+
DATE_STYLE DATE_HOURS OO_NS_NUMBER hours
|
|
973
|
+
DATE_STYLE DATE_MINUTES OO_NS_NUMBER minutes
|
|
974
|
+
DATE_STYLE DATE_SECONDS OO_NS_NUMBER seconds
|
|
975
|
+
DATE_STYLE DATE_AM_PM OO_NS_NUMBER am-pm
|
|
976
|
+
DATE_STYLE DATE_TEXT OO_NS_NUMBER text
|
|
977
|
+
DATE_STYLE DATE_TEXT_PROP OO_NS_STYLE text-properties
|
|
978
|
+
DATE_STYLE DATE_MAP OO_NS_STYLE map
|
|
979
|
+
DATE_STYLE DATE_FILL_CHARACTER OO_NS_NUMBER fill-character
|
|
980
|
+
OFFICE_STYLES TIME_STYLE OO_NS_NUMBER time-style
|
|
981
|
+
TIME_STYLE TIME_HOURS OO_NS_NUMBER hours
|
|
982
|
+
TIME_STYLE TIME_MINUTES OO_NS_NUMBER minutes
|
|
983
|
+
TIME_STYLE TIME_SECONDS OO_NS_NUMBER seconds
|
|
984
|
+
TIME_STYLE TIME_AM_PM OO_NS_NUMBER am-pm
|
|
985
|
+
TIME_STYLE TIME_TEXT OO_NS_NUMBER text
|
|
986
|
+
TIME_STYLE TIME_TEXT_PROP OO_NS_STYLE text-properties
|
|
987
|
+
TIME_STYLE TIME_MAP OO_NS_STYLE map
|
|
988
|
+
TIME_STYLE TIME_FILL_CHARACTER OO_NS_NUMBER fill-character
|
|
989
|
+
OFFICE_STYLES STYLE_BOOL OO_NS_NUMBER boolean-style
|
|
990
|
+
STYLE_BOOL BOOL_PROP OO_NS_NUMBER boolean
|
|
991
|
+
OFFICE_STYLES STYLE_CURRENCY OO_NS_NUMBER currency-style
|
|
992
|
+
STYLE_CURRENCY CURRENCY_STYLE OO_NS_NUMBER number
|
|
993
|
+
STYLE_CURRENCY CURRENCY_STYLE_PROP OO_NS_STYLE properties
|
|
994
|
+
STYLE_CURRENCY CURRENCY_MAP OO_NS_STYLE map
|
|
995
|
+
STYLE_CURRENCY CURRENCY_SYMBOL OO_NS_NUMBER currency-symbol
|
|
996
|
+
STYLE_CURRENCY CURRENCY_TEXT OO_NS_NUMBER text
|
|
997
|
+
STYLE_CURRENCY CURRENCY_FILL_CHARACTER OO_NS_NUMBER fill-character
|
|
998
|
+
OFFICE_STYLES STYLE_PERCENTAGE OO_NS_NUMBER percentage-style
|
|
999
|
+
STYLE_PERCENTAGE PERCENTAGE_STYLE_PROP OO_NS_NUMBER number
|
|
1000
|
+
STYLE_PERCENTAGE PERCENTAGE_TEXT OO_NS_NUMBER text
|
|
1001
|
+
STYLE_PERCENTAGE PERCENTAGE_FILL_CHARACTER OO_NS_NUMBER fill-character
|
|
1002
|
+
OFFICE_STYLES STYLE_TEXT OO_NS_NUMBER text-style
|
|
1003
|
+
STYLE_TEXT STYLE_TEXT_CONTENT OO_NS_NUMBER text-content
|
|
1004
|
+
STYLE_TEXT STYLE_TEXT_PROP OO_NS_NUMBER text
|
|
1005
|
+
STYLE_TEXT STYLE_TEXT_MAP OO_NS_STYLE map
|
|
1006
|
+
OFFICE OFFICE_BODY OO_NS_OFFICE body
|
|
1007
|
+
OFFICE_BODY TABLE_CALC_SETTINGS OO_NS_TABLE calculation-settings
|
|
1008
|
+
TABLE_CALC_SETTINGS DATE_CONVENTION OO_NS_TABLE null-date
|
|
1009
|
+
TABLE_CALC_SETTINGS ITERATION OO_NS_TABLE iteration
|
|
1010
|
+
OFFICE_BODY VALIDATIONS OO_NS_TABLE content-validations
|
|
1011
|
+
VALIDATIONS VALIDATION OO_NS_TABLE content-validation
|
|
1012
|
+
VALIDATION VALIDATION_MSG OO_NS_TABLE error-message
|
|
1013
|
+
OFFICE_BODY TABLE OO_NS_TABLE table
|
|
1014
|
+
TABLE FORMS OO_NS_OFFICE forms
|
|
1015
|
+
TABLE TABLE_COL OO_NS_TABLE table-column
|
|
1016
|
+
TABLE TABLE_ROW OO_NS_TABLE table-row
|
|
1017
|
+
TABLE_ROW TABLE_CELL OO_NS_TABLE table-cell
|
|
1018
|
+
TABLE_CELL CELL_CONTROL OO_NS_DRAW control
|
|
1019
|
+
TABLE_CELL CELL_ANNOTATION OO_NS_OFFICE annotation
|
|
1020
|
+
CELL_ANNOTATION ANNOTATION_TEXT OO_NS_TEXT p
|
|
1021
|
+
CELL_ANNOTATION CELL_ANNOTATION_AUTHOR OO_NS_DC creator
|
|
1022
|
+
CELL_ANNOTATION CELL_ANNOTATION_DATE OO_NS_DC date
|
|
1023
|
+
CELL_ANNOTATION CELL_ANNOTATION_DATE_STRING OO_NS_META date-string
|
|
1024
|
+
ANNOTATION_TEXT ANNOTATION_TEXT OO_NS_TEXT span
|
|
1025
|
+
ANNOTATION_TEXT ANNOTATION_TEXT OO_NS_TEXT a
|
|
1026
|
+
ANNOTATION_TEXT ANNOTATION_SPACE OO_NS_TEXT s
|
|
1027
|
+
ANNOTATION_TEXT ANNOTATION_TAB OO_NS_TEXT tab
|
|
1028
|
+
ANNOTATION_TEXT ANNOTATION_TAB OO_NS_TEXT tab-stop
|
|
1029
|
+
ANNOTATION_TEXT ANNOTATION_BREAK OO_NS_TEXT line-break
|
|
1030
|
+
TABLE_CELL CELL_TEXT OO_NS_TEXT p
|
|
1031
|
+
CELL_TEXT CELL_TEXT_S OO_NS_TEXT s
|
|
1032
|
+
CELL_TEXT CELL_TEXT_SPAN OO_NS_TEXT span
|
|
1033
|
+
TABLE_CELL CELL_OBJECT OO_NS_DRAW object
|
|
1034
|
+
TABLE_CELL CELL_GRAPHIC OO_NS_DRAW g
|
|
1035
|
+
CELL_GRAPHIC CELL_GRAPHIC OO_NS_DRAW g
|
|
1036
|
+
CELL_GRAPHIC DRAW_POLYLINE OO_NS_DRAW polyline
|
|
1037
|
+
CELL_GRAPHIC CELL_CONTROL OO_NS_DRAW control
|
|
1038
|
+
TABLE_CELL DRAW_LINE OO_NS_DRAW line
|
|
1039
|
+
DRAW_LINE IGNORED_TEXT_CONTENT OO_NS_TEXT p
|
|
1040
|
+
TABLE_ROW TABLE_COVERED_CELL OO_NS_TABLE covered-table-cell
|
|
1041
|
+
TABLE_COVERED_CELL DRAW_LINE OO_NS_DRAW line
|
|
1042
|
+
TABLE TABLE_COL_GROUP OO_NS_TABLE table-column-group
|
|
1043
|
+
TABLE_COL_GROUP TABLE_COL_GROUP OO_NS_TABLE table-column-group
|
|
1044
|
+
TABLE_COL_GROUP TABLE_COL OO_NS_TABLE table-column
|
|
1045
|
+
TABLE TABLE_ROW_GROUP OO_NS_TABLE table-row-group
|
|
1046
|
+
TABLE_ROW_GROUP TABLE_ROW_GROUP OO_NS_TABLE table-row-group
|
|
1047
|
+
TABLE_ROW_GROUP TABLE_ROW OO_NS_TABLE table-row
|
|
1048
|
+
OFFICE_BODY NAMED_EXPRS OO_NS_TABLE named-expressions
|
|
1049
|
+
OFFICE_BODY LABEL_RANGES OO_NS_TABLE label-ranges
|
|
1050
|
+
LABEL_RANGES LABEL_RANGE OO_NS_TABLE label-range
|
|
1051
|
+
NAMED_EXPRS NAMED_EXPR OO_NS_TABLE named-expression
|
|
1052
|
+
NAMED_EXPRS NAMED_RANGE OO_NS_TABLE named-range
|
|
1053
|
+
OFFICE_BODY DB_RANGES OO_NS_TABLE database-ranges
|
|
1054
|
+
DB_RANGES DB_RANGE OO_NS_TABLE database-range
|
|
1055
|
+
DB_RANGE TABLE_SORT OO_NS_TABLE sort
|
|
1056
|
+
TABLE_SORT SORT_BY OO_NS_TABLE sort-by`, styles_dtd: `START OFFICE_FONTS_OOO1 OO_NS_OFFICE font-decls
|
|
1057
|
+
OFFICE_FONTS_OOO1 FONT_DECL_OOO1 OO_NS_STYLE font-decl
|
|
1058
|
+
START OFFICE_DOC_STYLES OO_NS_OFFICE document-styles
|
|
1059
|
+
OFFICE_DOC_STYLES OFFICE_FONTS_OOO1 OO_NS_OFFICE font-decls
|
|
1060
|
+
OFFICE_DOC_STYLES OFFICE_FONTS OO_NS_OFFICE font-face-decls
|
|
1061
|
+
OFFICE_FONTS FONT_DECL OO_NS_STYLE font-face
|
|
1062
|
+
OFFICE_DOC_STYLES OFFICE_STYLES OO_NS_OFFICE styles
|
|
1063
|
+
OFFICE_STYLES FILLIMAGE OO_NS_DRAW fill-image
|
|
1064
|
+
OFFICE_STYLES DASH OO_NS_DRAW stroke-dash
|
|
1065
|
+
OFFICE_STYLES HATCH OO_NS_DRAW hatch
|
|
1066
|
+
OFFICE_STYLES GRADIENT OO_NS_DRAW gradient
|
|
1067
|
+
OFFICE_STYLES MARKER OO_NS_DRAW marker
|
|
1068
|
+
OFFICE_STYLES STYLE OO_NS_STYLE style
|
|
1069
|
+
STYLE TABLE_CELL_PROPS OO_NS_STYLE table-cell-properties
|
|
1070
|
+
STYLE TEXT_PROP OO_NS_STYLE text-properties
|
|
1071
|
+
STYLE PARAGRAPH_PROPS OO_NS_STYLE paragraph-properties
|
|
1072
|
+
PARAGRAPH_PROPS PARA_TABS OO_NS_STYLE tab-stops
|
|
1073
|
+
STYLE STYLE_PROP OO_NS_STYLE properties
|
|
1074
|
+
STYLE_PROP STYLE_TAB_STOPS OO_NS_STYLE tab-stops
|
|
1075
|
+
OFFICE_STYLES DEFAULT_STYLE OO_NS_STYLE default-style
|
|
1076
|
+
DEFAULT_STYLE DEFAULT_TABLE_CELL_PROPS OO_NS_STYLE table-cell-properties
|
|
1077
|
+
DEFAULT_STYLE DEFAULT_TEXT_PROP OO_NS_STYLE text-properties
|
|
1078
|
+
DEFAULT_STYLE DEFAULT_GRAPHIC_PROPS OO_NS_STYLE graphic-properties
|
|
1079
|
+
DEFAULT_STYLE DEFAULT_PARAGRAPH_PROPS OO_NS_STYLE paragraph-properties
|
|
1080
|
+
DEFAULT_PARAGRAPH_PROPS DEFAULT_PARA_TABS OO_NS_STYLE tab-stops
|
|
1081
|
+
DEFAULT_STYLE DEFAULT_STYLE_PROP OO_NS_STYLE properties
|
|
1082
|
+
DEFAULT_STYLE_PROP STYLE_TAB_STOPS OO_NS_STYLE tab-stops
|
|
1083
|
+
DEFAULT_STYLE DEFAULT_TABLE_COL_PROPS OO_NS_STYLE table-column-properties
|
|
1084
|
+
DEFAULT_STYLE DEFAULT_TABLE_ROW_PROPS OO_NS_STYLE table-row-properties
|
|
1085
|
+
OFFICE_STYLES NUMBER_STYLE OO_NS_NUMBER number-style
|
|
1086
|
+
NUMBER_STYLE NUMBER_STYLE_NUMBERFILL_CHARACTER OO_NS_LOCALC_EXT fill-character
|
|
1087
|
+
NUMBER_STYLE LOEXT_TEXT OO_NS_LOCALC_EXT text
|
|
1088
|
+
NUMBER_STYLE NUMBER_STYLE_NUMBER OO_NS_NUMBER number
|
|
1089
|
+
NUMBER_STYLE_NUMBER NUMBER_EMBEDDED_TEXT OO_NS_NUMBER embedded-text
|
|
1090
|
+
NUMBER_STYLE NUMBER_STYLE_TEXT OO_NS_NUMBER text
|
|
1091
|
+
NUMBER_STYLE_TEXT FORMAT_TEXT_INVISIBLE OO_GNUM_NS_EXT invisible
|
|
1092
|
+
NUMBER_STYLE_TEXT FORMAT_TEXT_REPEATED OO_GNUM_NS_EXT repeated
|
|
1093
|
+
NUMBER_STYLE NUMBER_STYLE_FRACTION OO_NS_NUMBER fraction
|
|
1094
|
+
NUMBER_STYLE NUMBER_SCI_STYLE_PROP OO_NS_NUMBER scientific-number
|
|
1095
|
+
NUMBER_STYLE NUMBER_STYLE_PROP OO_NS_STYLE properties
|
|
1096
|
+
NUMBER_STYLE NUMBER_MAP OO_NS_STYLE map
|
|
1097
|
+
NUMBER_STYLE NUMBER_TEXT_PROP OO_NS_STYLE text-properties
|
|
1098
|
+
NUMBER_STYLE FORMAT_TEXT_INVISIBLE OO_GNUM_NS_EXT invisible
|
|
1099
|
+
NUMBER_STYLE NUMBER_FILL_CHARACTER OO_NS_NUMBER fill-character
|
|
1100
|
+
OFFICE_STYLES DATE_STYLE OO_NS_NUMBER date-style
|
|
1101
|
+
DATE_STYLE DATE_DAY OO_NS_NUMBER day
|
|
1102
|
+
DATE_STYLE DATE_MONTH OO_NS_NUMBER month
|
|
1103
|
+
DATE_STYLE DATE_YEAR OO_NS_NUMBER year
|
|
1104
|
+
DATE_STYLE DATE_ERA OO_NS_NUMBER era
|
|
1105
|
+
DATE_STYLE DATE_DAY_OF_WEEK OO_NS_NUMBER day-of-week
|
|
1106
|
+
DATE_STYLE DATE_WEEK_OF_YEAR OO_NS_NUMBER week-of-year
|
|
1107
|
+
DATE_STYLE DATE_QUARTER OO_NS_NUMBER quarter
|
|
1108
|
+
DATE_STYLE DATE_HOURS OO_NS_NUMBER hours
|
|
1109
|
+
DATE_STYLE DATE_MINUTES OO_NS_NUMBER minutes
|
|
1110
|
+
DATE_STYLE DATE_SECONDS OO_NS_NUMBER seconds
|
|
1111
|
+
DATE_STYLE DATE_AM_PM OO_NS_NUMBER am-pm
|
|
1112
|
+
DATE_STYLE DATE_TEXT OO_NS_NUMBER text
|
|
1113
|
+
DATE_STYLE DATE_TEXT_PROP OO_NS_STYLE text-properties
|
|
1114
|
+
DATE_STYLE DATE_MAP OO_NS_STYLE map
|
|
1115
|
+
DATE_STYLE DATE_FILL_CHARACTER OO_NS_NUMBER fill-character
|
|
1116
|
+
OFFICE_STYLES TIME_STYLE OO_NS_NUMBER time-style
|
|
1117
|
+
TIME_STYLE TIME_HOURS OO_NS_NUMBER hours
|
|
1118
|
+
TIME_STYLE TIME_MINUTES OO_NS_NUMBER minutes
|
|
1119
|
+
TIME_STYLE TIME_SECONDS OO_NS_NUMBER seconds
|
|
1120
|
+
TIME_STYLE TIME_AM_PM OO_NS_NUMBER am-pm
|
|
1121
|
+
TIME_STYLE TIME_TEXT OO_NS_NUMBER text
|
|
1122
|
+
TIME_STYLE TIME_TEXT_PROP OO_NS_STYLE text-properties
|
|
1123
|
+
TIME_STYLE TIME_MAP OO_NS_STYLE map
|
|
1124
|
+
TIME_STYLE TIME_FILL_CHARACTER OO_NS_NUMBER fill-character
|
|
1125
|
+
OFFICE_STYLES STYLE_BOOL OO_NS_NUMBER boolean-style
|
|
1126
|
+
STYLE_BOOL BOOL_PROP OO_NS_NUMBER boolean
|
|
1127
|
+
OFFICE_STYLES STYLE_CURRENCY OO_NS_NUMBER currency-style
|
|
1128
|
+
STYLE_CURRENCY CURRENCY_STYLE OO_NS_NUMBER number
|
|
1129
|
+
STYLE_CURRENCY CURRENCY_STYLE_PROP OO_NS_STYLE properties
|
|
1130
|
+
STYLE_CURRENCY CURRENCY_MAP OO_NS_STYLE map
|
|
1131
|
+
STYLE_CURRENCY CURRENCY_SYMBOL OO_NS_NUMBER currency-symbol
|
|
1132
|
+
STYLE_CURRENCY CURRENCY_TEXT OO_NS_NUMBER text
|
|
1133
|
+
CURRENCY_TEXT FORMAT_TEXT_INVISIBLE OO_GNUM_NS_EXT invisible
|
|
1134
|
+
CURRENCY_TEXT FORMAT_TEXT_REPEATED OO_GNUM_NS_EXT repeated
|
|
1135
|
+
STYLE_CURRENCY CURRENCY_TEXT_PROP OO_NS_STYLE text-properties
|
|
1136
|
+
STYLE_CURRENCY CURRENCY_FILL_CHARACTER OO_NS_NUMBER fill-character
|
|
1137
|
+
STYLE_CURRENCY CURRENCY_FILL_CHARACTER2 OO_NS_LOCALC_EXT fill-character
|
|
1138
|
+
OFFICE_STYLES STYLE_PERCENTAGE OO_NS_NUMBER percentage-style
|
|
1139
|
+
STYLE_PERCENTAGE PERCENTAGE_STYLE_PROP OO_NS_NUMBER number
|
|
1140
|
+
STYLE_PERCENTAGE PERCENTAGE_TEXT OO_NS_NUMBER text
|
|
1141
|
+
STYLE_PERCENTAGE PERCENTAGE_MAP OO_NS_STYLE map
|
|
1142
|
+
STYLE_PERCENTAGE PERCENTAGE_TEXT_PROP OO_NS_STYLE text-properties
|
|
1143
|
+
STYLE_PERCENTAGE PERCENTAGE_FILL_CHARACTER OO_NS_NUMBER fill-character
|
|
1144
|
+
OFFICE_STYLES STYLE_TEXT OO_NS_NUMBER text-style
|
|
1145
|
+
STYLE_TEXT STYLE_TEXT_CONTENT OO_NS_NUMBER text-content
|
|
1146
|
+
STYLE_TEXT STYLE_TEXT_PROP OO_NS_NUMBER text
|
|
1147
|
+
STYLE_TEXT_PROP FORMAT_TEXT_INVISIBLE OO_GNUM_NS_EXT invisible
|
|
1148
|
+
STYLE_TEXT STYLE_TEXT_MAP OO_NS_STYLE map
|
|
1149
|
+
STYLE_TEXT STYLE_TEXT_TEXT_PROP OO_NS_STYLE text-properties
|
|
1150
|
+
OFFICE_DOC_STYLES AUTOMATIC_STYLES OO_NS_OFFICE automatic-styles
|
|
1151
|
+
AUTOMATIC_STYLES PAGE_MASTER OO_NS_STYLE page-master
|
|
1152
|
+
PAGE_MASTER PAGE_MASTER_PROPS OO_NS_STYLE properties
|
|
1153
|
+
PAGE_MASTER_PROPS PAGE_MASTER_BG_IMAGE OO_NS_STYLE background-image
|
|
1154
|
+
PAGE_MASTER PAGE_MASTER_HEADER OO_NS_STYLE header-style
|
|
1155
|
+
PAGE_MASTER_HEADER PAGE_MASTER_PROPS OO_NS_STYLE properties
|
|
1156
|
+
PAGE_MASTER PAGE_MASTER_FOOTER OO_NS_STYLE footer-style
|
|
1157
|
+
PAGE_MASTER_FOOTER PAGE_MASTER_PROPS OO_NS_STYLE properties
|
|
1158
|
+
AUTOMATIC_STYLES STYLE OO_NS_STYLE style
|
|
1159
|
+
AUTOMATIC_STYLES PAGE_LAYOUT OO_NS_STYLE page-layout
|
|
1160
|
+
PAGE_LAYOUT PAGE_LAYOUT_PROPS OO_NS_STYLE page-layout-properties
|
|
1161
|
+
PAGE_LAYOUT_PROPS BACK_IMAGE OO_NS_STYLE background-image
|
|
1162
|
+
PAGE_LAYOUT HEADER_STYLE OO_NS_STYLE header-style
|
|
1163
|
+
HEADER_STYLE HEADER_PROPERTIES OO_NS_STYLE header-footer-properties
|
|
1164
|
+
HEADER_PROPERTIES HF_BACK_IMAGE OO_NS_STYLE background-image
|
|
1165
|
+
PAGE_LAYOUT FOOTER_STYLE OO_NS_STYLE footer-style
|
|
1166
|
+
FOOTER_STYLE FOOTER_PROPERTIES OO_NS_STYLE header-footer-properties
|
|
1167
|
+
FOOTER_PROPERTIES HF_BACK_IMAGE OO_NS_STYLE background-image
|
|
1168
|
+
AUTOMATIC_STYLES NUMBER_STYLE OO_NS_NUMBER number-style
|
|
1169
|
+
AUTOMATIC_STYLES DATE_STYLE OO_NS_NUMBER date-style
|
|
1170
|
+
AUTOMATIC_STYLES TIME_STYLE OO_NS_NUMBER time-style
|
|
1171
|
+
AUTOMATIC_STYLES STYLE_BOOL OO_NS_NUMBER boolean-style
|
|
1172
|
+
AUTOMATIC_STYLES STYLE_CURRENCY OO_NS_NUMBER currency-style
|
|
1173
|
+
AUTOMATIC_STYLES STYLE_PERCENTAGE OO_NS_NUMBER percentage-style
|
|
1174
|
+
AUTOMATIC_STYLES STYLE_TEXT OO_NS_NUMBER text-style
|
|
1175
|
+
OFFICE_DOC_STYLES MASTER_STYLES OO_NS_OFFICE master-styles
|
|
1176
|
+
MASTER_STYLES MASTER_PAGE OO_NS_STYLE master-page
|
|
1177
|
+
MASTER_PAGE MASTER_PAGE_HEADER_LEFT OO_NS_STYLE header-left
|
|
1178
|
+
MASTER_PAGE_HEADER_LEFT MASTER_PAGE_HEADER_FOOTER_LEFT_P OO_NS_TEXT p
|
|
1179
|
+
MASTER_PAGE_HEADER_FOOTER_LEFT_P MASTER_PAGE_HEADER_FOOTER_LEFT_SPAN OO_NS_TEXT span
|
|
1180
|
+
MASTER_PAGE_HEADER_FOOTER_LEFT_SPAN MASTER_PAGE_HEADER_FOOTER_LEFT_PAGE_NUMBER OO_NS_TEXT page-number
|
|
1181
|
+
MASTER_PAGE_HEADER_FOOTER_LEFT_SPAN MASTER_PAGE_HEADER_FOOTER_LEFT_SHEET_NAME OO_NS_TEXT sheet-name
|
|
1182
|
+
MASTER_PAGE MASTER_PAGE_FOOTER_LEFT OO_NS_STYLE footer-left
|
|
1183
|
+
MASTER_PAGE_FOOTER_LEFT MASTER_PAGE_HEADER_FOOTER_LEFT_P OO_NS_TEXT p
|
|
1184
|
+
MASTER_PAGE MASTER_PAGE_HEADER OO_NS_STYLE header
|
|
1185
|
+
MASTER_PAGE_HEADER MASTER_PAGE_HF_R_LEFT OO_NS_STYLE region-left
|
|
1186
|
+
MASTER_PAGE_HF_R_LEFT MASTER_PAGE_HF_P OO_NS_TEXT p
|
|
1187
|
+
MASTER_PAGE_HF_P TEXT_S OO_NS_TEXT s
|
|
1188
|
+
MASTER_PAGE_HF_P TEXT_LINE_BREAK OO_NS_TEXT line-break
|
|
1189
|
+
MASTER_PAGE_HF_P TEXT_TAB OO_NS_TEXT tab
|
|
1190
|
+
MASTER_PAGE_HF_P HF_TITLE OO_NS_TEXT title
|
|
1191
|
+
MASTER_PAGE_HF_P HF_DATE OO_NS_TEXT date
|
|
1192
|
+
MASTER_PAGE_HF_P HF_TIME OO_NS_TEXT time
|
|
1193
|
+
MASTER_PAGE_HF_P HF_SHEET_NAME OO_NS_TEXT sheet-name
|
|
1194
|
+
MASTER_PAGE_HF_P HF_PAGE_NUMBER OO_NS_TEXT page-number
|
|
1195
|
+
MASTER_PAGE_HF_P HF_PAGE_COUNT OO_NS_TEXT page-count
|
|
1196
|
+
MASTER_PAGE_HF_P HF_FILE_NAME OO_NS_TEXT file-name
|
|
1197
|
+
MASTER_PAGE_HF_P HF_EXPRESSION OO_NS_TEXT expression
|
|
1198
|
+
MASTER_PAGE_HF_P TEXT_SPAN OO_NS_TEXT span
|
|
1199
|
+
TEXT_SPAN TEXT_SPAN OO_NS_TEXT span
|
|
1200
|
+
TEXT_SPAN TEXT_S OO_NS_TEXT s
|
|
1201
|
+
TEXT_SPAN TEXT_LINE_BREAK OO_NS_TEXT line-break
|
|
1202
|
+
TEXT_SPAN TEXT_TAB OO_NS_TEXT tab
|
|
1203
|
+
TEXT_SPAN HF_SHEET_NAME OO_NS_TEXT sheet-name
|
|
1204
|
+
TEXT_SPAN HF_PAGE_NUMBER OO_NS_TEXT page-number
|
|
1205
|
+
TEXT_SPAN HF_PAGE_COUNT OO_NS_TEXT page-count
|
|
1206
|
+
TEXT_SPAN HF_FILE_NAME OO_NS_TEXT file-name
|
|
1207
|
+
TEXT_SPAN HF_EXPRESSION OO_NS_TEXT expression
|
|
1208
|
+
MASTER_PAGE_HEADER MASTER_PAGE_HF_R_RIGHT OO_NS_STYLE region-right
|
|
1209
|
+
MASTER_PAGE_HF_R_RIGHT MASTER_PAGE_HF_P OO_NS_TEXT p
|
|
1210
|
+
MASTER_PAGE_HEADER MASTER_PAGE_HF_R_CENTER OO_NS_STYLE region-center
|
|
1211
|
+
MASTER_PAGE_HF_R_CENTER MASTER_PAGE_HF_P OO_NS_TEXT p
|
|
1212
|
+
MASTER_PAGE_HEADER MASTER_PAGE_HF_P OO_NS_TEXT p
|
|
1213
|
+
MASTER_PAGE MASTER_PAGE_FOOTER OO_NS_STYLE footer
|
|
1214
|
+
MASTER_PAGE_FOOTER MASTER_PAGE_HF_R_LEFT OO_NS_STYLE region-left
|
|
1215
|
+
MASTER_PAGE_FOOTER MASTER_PAGE_HF_R_RIGHT OO_NS_STYLE region-right
|
|
1216
|
+
MASTER_PAGE_FOOTER MASTER_PAGE_HF_R_CENTER OO_NS_STYLE region-center
|
|
1217
|
+
MASTER_PAGE_FOOTER MASTER_PAGE_HF_P OO_NS_TEXT p` };
|
|
1218
|
+
function In(n, t) {
|
|
1219
|
+
if (n === void 0) return;
|
|
1220
|
+
t(n.length);
|
|
1221
|
+
let r = "";
|
|
1222
|
+
for (let e of n.trim()) {
|
|
1223
|
+
if (` \r
|
|
1224
|
+
`.includes(e)) break;
|
|
1225
|
+
r += e;
|
|
1226
|
+
}
|
|
1227
|
+
if (r === "sub") return -1;
|
|
1228
|
+
if (r === "super") return 1;
|
|
1229
|
+
if (r.length > 1 && r.endsWith("%") && Number(r.slice(0, -1)) === 0) return 0;
|
|
1230
|
+
}
|
|
1231
|
+
var On = { text: [un.text, "http://openoffice.org/2000/text"], style: [un.style, "http://openoffice.org/2000/style"], fo: [un.fo, "http://www.w3.org/1999/XSL/Format"], svg: [un.svg, "http://www.w3.org/2000/svg"], gnm: [un.gnm] };
|
|
1232
|
+
function Ge(n, t, r) {
|
|
1233
|
+
return n.attributes.find((e) => e.localName === t && On[r].includes(e.namespace))?.value;
|
|
1234
|
+
}
|
|
1235
|
+
function _i(n) {
|
|
1236
|
+
if (!n) return;
|
|
1237
|
+
let r = { pt: 1, pc: 12, in: 72, cm: 72 / 2.54, mm: 72 / 25.4 }[n.slice(-2)], e = Number(n.slice(0, -2));
|
|
1238
|
+
return r && Number.isFinite(e) && e >= 0 ? e * r : void 0;
|
|
1239
|
+
}
|
|
1240
|
+
function Mn(n, t) {
|
|
1241
|
+
let r = /* @__PURE__ */ new Map(), e = /* @__PURE__ */ new Map();
|
|
1242
|
+
for (let d of n) for (let i of d.children) for (let o of i.children) {
|
|
1243
|
+
if (t(), !On.style.includes(o.namespace)) continue;
|
|
1244
|
+
let _ = Ge(o, "name", "style");
|
|
1245
|
+
if (_ && (["styles", "automatic-styles"].includes(i.localName) && o.localName === "style" && r.set(Ge(o, "family", "style") + ":" + _, o), ["font-face-decls", "font-decls"].includes(i.localName))) {
|
|
1246
|
+
let a = Ge(o, "font-family", "svg") ?? Ge(o, "font-family", "fo");
|
|
1247
|
+
a !== void 0 && e.set(_, a.length >= 2 && ["'", '"'].includes(a[0]) && a.at(-1) === a[0] ? a.slice(1, -1) : a);
|
|
1248
|
+
}
|
|
1249
|
+
}
|
|
1250
|
+
let c = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Set();
|
|
1251
|
+
function f(d, i) {
|
|
1252
|
+
if (!d) return {};
|
|
1253
|
+
t();
|
|
1254
|
+
let o = i + ":" + d, _ = c.get(o);
|
|
1255
|
+
if (_) return _;
|
|
1256
|
+
let a = r.get(o);
|
|
1257
|
+
if (!a) return {};
|
|
1258
|
+
if (m.has(o)) throw new La("io", "E Invalid OpenDocument: cyclic text style inheritance");
|
|
1259
|
+
m.add(o);
|
|
1260
|
+
try {
|
|
1261
|
+
let l2 = { ...f(Ge(a, "parent-style-name", "style"), i) };
|
|
1262
|
+
for (let u2 of a.children) {
|
|
1263
|
+
if (t(), !On.style.includes(u2.namespace) || !["text-properties", "properties"].includes(u2.localName)) continue;
|
|
1264
|
+
let S = Ge(u2, "font-name", "style"), b = Ge(u2, "font-family", "fo") ?? (S ? e.get(S) ?? S : void 0);
|
|
1265
|
+
b !== void 0 && (l2.family = b);
|
|
1266
|
+
let g2 = _i(Ge(u2, "font-size", "fo"));
|
|
1267
|
+
g2 !== void 0 && (l2.size = Math.round(g2 * 1024));
|
|
1268
|
+
let A = Ge(u2, "font-weight", "fo");
|
|
1269
|
+
if (A !== void 0) {
|
|
1270
|
+
let s = A === "normal" ? 400 : A === "bold" ? 700 : Number(A);
|
|
1271
|
+
Number.isInteger(s) && s >= 100 && s <= 900 && (l2.bold = (s - 400) / 300);
|
|
1272
|
+
}
|
|
1273
|
+
let h = Ge(u2, "font-style", "fo");
|
|
1274
|
+
h !== void 0 && (l2.italic = ["italic", "oblique"].includes(h) ? 1 : 0);
|
|
1275
|
+
let R = Ge(u2, "text-line-through-style", "style");
|
|
1276
|
+
R !== void 0 && (l2.strikethrough = R === "none" ? 0 : 1);
|
|
1277
|
+
let N = In(Ge(u2, "text-position", "style"), t);
|
|
1278
|
+
N !== void 0 && (l2.subscript = N === -1 ? 1 : 0, l2.superscript = N === 1 ? 1 : 0);
|
|
1279
|
+
let y = Ge(u2, "text-underline-style", "style"), F = Ge(u2, "text-underline-type", "style");
|
|
1280
|
+
if (y !== void 0 || F === "none") {
|
|
1281
|
+
let s = F === "double" || Ge(u2, "text-underline-width", "style") === "bold", O = Ge(u2, "text-underline-placement", "gnm") === "low";
|
|
1282
|
+
l2.underline = y === "none" || F === "none" ? "none" : O ? s ? "doubleAccounting" : "low" : s ? "double" : "single";
|
|
1283
|
+
}
|
|
1284
|
+
let w = Ge(u2, "color", "fo");
|
|
1285
|
+
w?.length === 7 && w[0] === "#" && [...w.slice(1)].every((s) => "0123456789abcdefABCDEF".includes(s)) && (l2.color = [w.slice(1, 3), w.slice(3, 5), w.slice(5)].map((s) => s.toUpperCase()).join("x"));
|
|
1286
|
+
}
|
|
1287
|
+
return c.set(o, l2), l2;
|
|
1288
|
+
} finally {
|
|
1289
|
+
m.delete(o);
|
|
1290
|
+
}
|
|
1291
|
+
}
|
|
1292
|
+
return (d) => {
|
|
1293
|
+
let i = "", o = 0, _ = [];
|
|
1294
|
+
function a(S, b) {
|
|
1295
|
+
t(S.length);
|
|
1296
|
+
let g2 = o;
|
|
1297
|
+
o += new TextEncoder().encode(S).length, i += S;
|
|
1298
|
+
let A = Object.keys(b);
|
|
1299
|
+
if (t(A.length), o === g2 || !A.length) return;
|
|
1300
|
+
let h = _.at(-1);
|
|
1301
|
+
h?.end === g2 && Object.keys(h.attributes).length === A.length && A.every((R) => h.attributes[R] === b[R]) ? _[_.length - 1] = { ...h, end: o } : _.push({ start: g2, end: o, attributes: b });
|
|
1302
|
+
}
|
|
1303
|
+
function l2(S, b) {
|
|
1304
|
+
t();
|
|
1305
|
+
let g2 = { ...b, ...f(Ge(S, "style-name", "text"), S.localName === "p" ? "paragraph" : "text") };
|
|
1306
|
+
for (let A of S.content) if (t(), A.kind === "text" || A.kind === "cdata") a(A.text, g2);
|
|
1307
|
+
else if (A.kind === "element" && On.text.includes(A.namespace)) {
|
|
1308
|
+
if (["span", "a"].includes(A.localName)) l2(A, g2);
|
|
1309
|
+
else if (["tab", "tab-stop", "line-break"].includes(A.localName)) a(A.localName === "line-break" ? `
|
|
1310
|
+
` : " ", g2);
|
|
1311
|
+
else if (A.localName === "s") {
|
|
1312
|
+
let h = Number(Ge(A, "c", "text") ?? "1");
|
|
1313
|
+
if (!Number.isSafeInteger(h) || h < 0) throw new La("io", "E Invalid OpenDocument: invalid text space count");
|
|
1314
|
+
t(h), a(" ".repeat(h), g2);
|
|
1315
|
+
}
|
|
1316
|
+
}
|
|
1317
|
+
}
|
|
1318
|
+
let u2 = true;
|
|
1319
|
+
for (let S of d.children) On.text.includes(S.namespace) && S.localName === "p" && (u2 || a(`
|
|
1320
|
+
`, {}), u2 = false, l2(S, {}));
|
|
1321
|
+
return { value: i, ..._.length ? { richText: _ } : {} };
|
|
1322
|
+
};
|
|
1323
|
+
}
|
|
1324
|
+
async function Xn(n, t, r, e, c, m, f = true) {
|
|
1325
|
+
let d = "";
|
|
1326
|
+
for (let { text: i, attributes: o } of Ei(n, t, r.charge)) {
|
|
1327
|
+
let _ = {};
|
|
1328
|
+
if (typeof o.family == "string" && (_["style:font-name"] = await e.register("fonts", "style:font-face", "rtfont", { "svg:font-family": o.family })), typeof o.size == "number" && Number.isFinite(o.size) && o.size >= 0 && (_["fo:font-size"] = o.size / 1024 + "pt"), o.bold !== void 0) {
|
|
1329
|
+
let l2 = Number(o.bold), u2 = l2 * 300 + 400, S = Math.round(u2), b = l2 === (S - 400) / 300 ? S : Math.trunc(u2);
|
|
1330
|
+
_["fo:font-weight"] = b === 400 ? "normal" : b === 700 ? "bold" : b >= 100 && b <= 900 ? String(b) : Number(o.bold) ? "bold" : "normal";
|
|
1331
|
+
}
|
|
1332
|
+
if (o.italic !== void 0 && (_["fo:font-style"] = Number(o.italic) ? "italic" : "normal"), o.strikethrough !== void 0 && (_["style:text-line-through-style"] = Number(o.strikethrough) ? "solid" : "none"), (o.subscript !== void 0 || o.superscript !== void 0) && (_["style:text-position"] = Number(o.subscript) ? "sub 83%" : Number(o.superscript) ? "super 83%" : "0% 100%"), typeof o.color == "string" && (_["fo:color"] = "#" + o.color.split("x").join("")), typeof o.underline == "string") {
|
|
1333
|
+
let l2 = ["low", "singleAccounting", "doubleAccounting"].includes(o.underline), u2 = ["double", "double-line", "doubleAccounting"].includes(o.underline), S = l2 || u2 || ["single", "single-line", "error", "error-line"].includes(o.underline);
|
|
1334
|
+
_["style:text-underline-style"] = S ? "solid" : "none", _["style:text-underline-type"] = S ? u2 ? "double" : "single" : "none", _["style:text-underline-width"] = "auto", _["style:text-underline-color"] = "font-color", _["style:text-underline-mode"] = "continuous", c && l2 && (_["gnm:text-underline-placement"] = "low");
|
|
1335
|
+
}
|
|
1336
|
+
let a = m ? r.element("text:a", m, r.escape(i)) : r.text(i, f);
|
|
1337
|
+
if (!Object.keys(_).length) d += a;
|
|
1338
|
+
else {
|
|
1339
|
+
let l2 = await e.register("contentAutomatic", "style:style", "rt", { "style:family": "text" }, r.element("style:text-properties", _));
|
|
1340
|
+
d += r.element("text:span", { "text:style-name": l2 }, a);
|
|
1341
|
+
}
|
|
1342
|
+
}
|
|
1343
|
+
return d;
|
|
1344
|
+
}
|
|
1345
|
+
var mn = "urn:oasis:names:tc:opendocument:xmlns:";
|
|
1346
|
+
var Et = { table: [mn + "table:1.0", "http://openoffice.org/2000/table"], office: [mn + "office:1.0", "http://openoffice.org/2000/office"], text: [mn + "text:1.0", "http://openoffice.org/2000/text"], style: [mn + "style:1.0", "http://openoffice.org/2000/style"], fo: [mn + "xsl-fo-compatible:1.0", "http://www.w3.org/1999/XSL/Format"], dc: ["http://purl.org/dc/elements/1.1/"], xlink: ["http://www.w3.org/1999/xlink"], gnm: ["http://www.gnumeric.org/odf-extension/1.0"] };
|
|
1347
|
+
function $(n, t, r) {
|
|
1348
|
+
return n?.attributes.find((e) => e.localName === t && Et[r].includes(e.namespace))?.value;
|
|
1349
|
+
}
|
|
1350
|
+
function Xe(n, t = {}, r = [], e = "") {
|
|
1351
|
+
return { name: n, namespace: "http://www.gnumeric.org/v10.dtd", attributes: Object.entries(t).map(([c, m]) => ({ name: c, namespace: "", value: String(m) })), children: r, text: e };
|
|
1352
|
+
}
|
|
1353
|
+
function At(n) {
|
|
1354
|
+
return n !== null && typeof n == "object" && !Array.isArray(n) ? n : void 0;
|
|
1355
|
+
}
|
|
1356
|
+
function ha(n) {
|
|
1357
|
+
let t = At(n)?.attributes;
|
|
1358
|
+
return Object.fromEntries(Array.isArray(t) ? t.flatMap((r) => {
|
|
1359
|
+
let e = At(r);
|
|
1360
|
+
return typeof e?.name == "string" && typeof e.value == "string" ? [[e.name, e.value]] : [];
|
|
1361
|
+
}) : []);
|
|
1362
|
+
}
|
|
1363
|
+
function Sn(n) {
|
|
1364
|
+
if (!(!n?.startsWith("#") || n.length !== 7 || [...n.slice(1)].some((t) => !"0123456789abcdefABCDEF".includes(t)))) return [1, 3, 5].map((t) => (parseInt(n.slice(t, t + 2), 16) * 257).toString(16).toUpperCase()).join(":");
|
|
1365
|
+
}
|
|
1366
|
+
function Wn(n) {
|
|
1367
|
+
if (!n) return;
|
|
1368
|
+
let r = { cm: 72 / 2.54, mm: 72 / 25.4, in: 72, pt: 1, pc: 12 }[n.slice(-2)], e = Number(n.slice(0, -2));
|
|
1369
|
+
return r && Number.isFinite(e) && e >= 0 ? e * r : void 0;
|
|
1370
|
+
}
|
|
1371
|
+
function Vn(n, t) {
|
|
1372
|
+
let r = n.children.find((m) => m.localName === "creator" && Et.dc.includes(m.namespace))?.text ?? $(n, "author", "office"), e = t(n), c = e.richText?.every((m) => typeof m.attributes.family != "string" || !m.attributes.family.includes(":"));
|
|
1373
|
+
return { ...r === void 0 ? {} : { Author: r }, Text: e.value, ...e.richText?.length && c ? { TextFormat: mi(e.richText) } : {} };
|
|
1374
|
+
}
|
|
1375
|
+
function zn(n, t, r) {
|
|
1376
|
+
let e = ha(t), c = At(t)?.children, m = Array.isArray(c) ? c.find((a) => At(a)?.name === "Font") : void 0, f = ha(m), d = At(m)?.text ?? "Sans", i = Array.isArray(c) ? At(c.find((a) => At(a)?.name === "StyleBorder"))?.children : void 0, o = /* @__PURE__ */ new Map();
|
|
1377
|
+
if (Array.isArray(i)) for (let a of i) {
|
|
1378
|
+
let l2 = At(a)?.name;
|
|
1379
|
+
typeof l2 == "string" && o.set(l2, a);
|
|
1380
|
+
}
|
|
1381
|
+
for (let a of n.children) {
|
|
1382
|
+
if (r(), !Et.style.includes(a.namespace) || !a.localName.endsWith("properties")) continue;
|
|
1383
|
+
let l2 = Sn($(a, "background-color", "fo"));
|
|
1384
|
+
l2 && (e.Back = l2, e.Shade = 1);
|
|
1385
|
+
let u2 = Sn($(a, "background-colour", "gnm"));
|
|
1386
|
+
u2 && (e.Back = u2);
|
|
1387
|
+
let S = Sn($(a, "pattern-colour", "gnm"));
|
|
1388
|
+
S && (e.PatternColor = S);
|
|
1389
|
+
let b = $(a, "pattern", "gnm");
|
|
1390
|
+
b !== void 0 && Number.isInteger(Number(b)) && Number(b) > 0 && (e.Shade = Number(b));
|
|
1391
|
+
let g2 = $(a, "wrap-option", "fo");
|
|
1392
|
+
g2 !== void 0 && (e.WrapText = g2 === "wrap" ? 1 : 0);
|
|
1393
|
+
let A = $(a, "cell-protect", "style");
|
|
1394
|
+
A !== void 0 && (e.Locked = A.includes("protected") && A !== "unprotected" ? 1 : 0, A.includes("formula-hidden") && (e.Hidden = 1));
|
|
1395
|
+
let h = Sn($(a, "color", "fo"));
|
|
1396
|
+
h && (e.Fore = h);
|
|
1397
|
+
let R = $(a, "text-align", "fo"), N = { start: "LEFT", end: "RIGHT", left: "LEFT", right: "RIGHT", center: "CENTER", justify: "JUSTIFY" };
|
|
1398
|
+
R && N[R] && (e.HAlign = "GNM_HALIGN_" + N[R]);
|
|
1399
|
+
let y = $(a, "vertical-align", "style"), F = { top: "TOP", middle: "CENTER", bottom: "BOTTOM", justify: "JUSTIFY" };
|
|
1400
|
+
y && F[y] && (e.VAlign = "GNM_VALIGN_" + F[y]);
|
|
1401
|
+
let w = $(a, "rotation-angle", "style");
|
|
1402
|
+
w !== void 0 && Number.isFinite(Number(w)) && (e.Rotation = Number(w));
|
|
1403
|
+
let s = $(a, "shrink-to-fit", "style");
|
|
1404
|
+
s !== void 0 && (e.ShrinkToFit = s === "true" ? 1 : 0);
|
|
1405
|
+
let O = Wn($(a, "font-size", "fo"));
|
|
1406
|
+
O !== void 0 && (f.Unit = O);
|
|
1407
|
+
let E = $(a, "font-weight", "fo");
|
|
1408
|
+
E !== void 0 && (f.Bold = E === "bold" || Number(E) >= 600 ? 1 : 0);
|
|
1409
|
+
let p = $(a, "font-style", "fo");
|
|
1410
|
+
p !== void 0 && (f.Italic = p === "italic" || p === "oblique" ? 1 : 0);
|
|
1411
|
+
let T2 = $(a, "text-underline-style", "style");
|
|
1412
|
+
if (T2 !== void 0) {
|
|
1413
|
+
let I3 = $(a, "text-underline-type", "style"), M = I3 === "double" || $(a, "text-underline-width", "style") === "bold";
|
|
1414
|
+
f.Underline = T2 === "none" || I3 === "none" ? 0 : (M ? 2 : 1) + ($(a, "text-underline-placement", "gnm") === "low" ? 2 : 0);
|
|
1415
|
+
}
|
|
1416
|
+
let Y = $(a, "text-line-through-style", "style");
|
|
1417
|
+
Y !== void 0 && (f.StrikeThrough = Y === "none" ? 0 : 1);
|
|
1418
|
+
let C = In($(a, "text-position", "style"), r);
|
|
1419
|
+
C !== void 0 && (f.Script = C), d = $(a, "font-family", "fo") ?? $(a, "font-name", "style") ?? d;
|
|
1420
|
+
for (let [I3, M] of [["top", "Top"], ["bottom", "Bottom"], ["left", "Left"], ["right", "Right"]]) {
|
|
1421
|
+
let x = $(a, "border-" + I3, "fo") ?? $(a, "border", "fo");
|
|
1422
|
+
if (!x) continue;
|
|
1423
|
+
let W = x.split(" ").filter(Boolean), v = x === "none" ? "none" : W[1], ne = Wn(W[0]), K = Sn(W[2]), G = v === "none" ? 0 : v === "double" ? 6 : v === "dashed" ? 4 : v === "dotted" ? 7 : ne !== void 0 ? ne > 2.5 ? 5 : ne > 1 ? 2 : 1 : void 0;
|
|
1424
|
+
G !== void 0 && o.set(M, Xe(M, { Style: G, Color: K ?? "0:0:0" }));
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
let _ = Array.isArray(c) ? c.filter((a) => !["Font", "StyleBorder"].includes(String(At(a)?.name))) : [];
|
|
1428
|
+
return Xe("Style", e, [Xe("Font", f, [], String(d)), ..._, ...o.size ? [Xe("StyleBorder", {}, [...o.values()])] : []]);
|
|
1429
|
+
}
|
|
1430
|
+
async function ya(n, t, r = [], e = [], c = Mn(r, t), m = (f) => f.children) {
|
|
1431
|
+
let f = [], d = [], i = [], o = 0, _ = 0, a = (N, y) => Number($(N, y, "table") ?? "1");
|
|
1432
|
+
async function l2(N) {
|
|
1433
|
+
for await (let F of m(N)) if (t(), !!Et.table.includes(F.namespace)) {
|
|
1434
|
+
if (["table-row-group", "table-rows", "table-header-rows"].includes(F.localName)) {
|
|
1435
|
+
let w = o;
|
|
1436
|
+
await l2(F), F.localName === "table-header-rows" && o > w && i.push(Xe("repeat_top", { value: `$${w + 1}:$${o}` }));
|
|
1437
|
+
continue;
|
|
1438
|
+
}
|
|
1439
|
+
if (F.localName === "table-row") {
|
|
1440
|
+
_ = 0;
|
|
1441
|
+
for await (let w of m(F)) {
|
|
1442
|
+
let O = function(E) {
|
|
1443
|
+
for (let p of E.children) if (t(), !!Et.text.includes(p.namespace)) {
|
|
1444
|
+
if (p.localName === "a") {
|
|
1445
|
+
let T2 = $(p, "href", "xlink");
|
|
1446
|
+
if (!T2) continue;
|
|
1447
|
+
let Y = T2.startsWith("http") ? "GnmHLinkURL" : T2.startsWith("mail") ? "GnmHLinkEMail" : T2.startsWith("file") ? "GnmHLinkExternal" : "GnmHLinkCurWB", C = Y === "GnmHLinkCurWB" ? Oi(T2, "import", t, e) : T2;
|
|
1448
|
+
d.push(Xe("StyleRegion", { startRow: o, endRow: o, startCol: _, endCol: _ }, [Xe("Style", { Fore: "0:0:FFFF" }, [Xe("Font", { Underline: 1 }), Xe("HyperLink", { type: Y, target: C, ...$(p, "title", "office") ? { tip: $(p, "title", "office") } : {} })])]));
|
|
1449
|
+
}
|
|
1450
|
+
O(p);
|
|
1451
|
+
}
|
|
1452
|
+
};
|
|
1453
|
+
var y = O;
|
|
1454
|
+
if (t(), !Et.table.includes(w.namespace) || !["table-cell", "covered-table-cell"].includes(w.localName)) continue;
|
|
1455
|
+
let s = vn(o, _);
|
|
1456
|
+
for (let E of w.children.filter((p) => p.localName === "annotation" && Et.office.includes(p.namespace))) f.push(Xe("CellComment", { ObjectBound: s, ObjectOffset: "1 0 1 0", Direction: 17, Print: 1, ...Vn(E, c) }));
|
|
1457
|
+
O(w), _ += a(w, "number-columns-repeated");
|
|
1458
|
+
}
|
|
1459
|
+
o += a(F, "number-rows-repeated");
|
|
1460
|
+
}
|
|
1461
|
+
}
|
|
1462
|
+
}
|
|
1463
|
+
await l2(n);
|
|
1464
|
+
let u2 = $(n, "style-name", "table"), b = r.flatMap((N) => N.children).flatMap((N) => N.children).filter((N) => Et.style.includes(N.namespace)), g2 = b.find((N) => N.localName === "style" && $(N, "name", "style") === u2), A = b.find((N) => N.localName === "master-page" && $(N, "name", "style") === $(g2, "master-page-name", "style")), h = b.find((N) => ["page-layout", "page-master"].includes(N.localName) && $(N, "name", "style") === $(A, "page-layout-name", "style"));
|
|
1465
|
+
for (let N of h?.children ?? []) {
|
|
1466
|
+
t();
|
|
1467
|
+
let y = $(N, "print-orientation", "style");
|
|
1468
|
+
(y === "portrait" || y === "landscape") && i.push(Xe("orientation", {}, [], y));
|
|
1469
|
+
let F = {};
|
|
1470
|
+
for (let p of ["top", "bottom", "left", "right"]) {
|
|
1471
|
+
let T2 = Wn($(N, "margin-" + p, "fo") ?? $(N, "margin", "fo"));
|
|
1472
|
+
T2 !== void 0 && (F[p] = T2);
|
|
1473
|
+
}
|
|
1474
|
+
Object.keys(F).length && i.push(Xe("Margins", {}, Object.entries(F).map(([p, T2]) => Xe(p, { Points: T2, PrefUnit: "cm" }))));
|
|
1475
|
+
let w = $(N, "scale-to-pages", "style"), s = $(N, "scale-to-X", "style") ?? $(N, "scale-to-X", "gnm") ?? w, O = $(N, "scale-to-Y", "style") ?? $(N, "scale-to-Y", "gnm") ?? w, E = $(N, "scale-to", "style");
|
|
1476
|
+
s || O ? i.push(Xe("Scale", { type: "fit", cols: s ?? "0", rows: O ?? "0" })) : E?.endsWith("%") && i.push(Xe("Scale", { type: "percentage", percentage: E.slice(0, -1) }));
|
|
1477
|
+
}
|
|
1478
|
+
let R = [];
|
|
1479
|
+
for (let [N, y] of [["Objects", f], ["Styles", d], ["PrintInformation", i]]) y.length && R.push({ source: "Gnumeric_XmlIO:sax", kind: N, disposition: "retained", data: Xe(N, {}, y) });
|
|
1480
|
+
return R;
|
|
1481
|
+
}
|
|
1482
|
+
function ga(n, t, r) {
|
|
1483
|
+
let e = [];
|
|
1484
|
+
for (let m of n.children.filter((f) => f.localName === "database-ranges" && Et.table.includes(f.namespace))) for (let f of m.children) {
|
|
1485
|
+
let u2 = function(S) {
|
|
1486
|
+
for (let b of S.children) if (r(), !!Et.table.includes(b.namespace)) if (b.localName === "filter-condition") {
|
|
1487
|
+
let A = { "=": "eq", "!=": "ne", "<": "lt", ">": "gt", "<=": "lte", ">=": "gte" }[$(b, "operator", "table") ?? "="], h = $(b, "value", "table") ?? "";
|
|
1488
|
+
A && l2.push(Xe("Field", { Index: $(b, "field-number", "table") ?? "0", Type: "expr", Op0: A, Value0: $(b, "data-type", "table") === "number" ? 40 : 60, ValueType0: h }));
|
|
1489
|
+
} else ["filter", "filter-and"].includes(b.localName) && u2(b);
|
|
1490
|
+
};
|
|
1491
|
+
var c = u2;
|
|
1492
|
+
r();
|
|
1493
|
+
let d = $(f, "target-range-address", "table");
|
|
1494
|
+
if (!d) continue;
|
|
1495
|
+
r(d.length);
|
|
1496
|
+
let i = Ti("=[" + d + "]", { grammar: ui, position: { sheet: t, row: 0, column: 0 } });
|
|
1497
|
+
if (!i.ok || i.document.root.kind !== "reference") continue;
|
|
1498
|
+
let o = i.document.root, _ = o.first, a = o.last ?? _;
|
|
1499
|
+
if (_.workbook || a.workbook || (_.sheet ?? t) !== t || (a.sheet ?? _.sheet ?? t) !== t || !_.row || !_.column || !a.row || !a.column) continue;
|
|
1500
|
+
let l2 = [];
|
|
1501
|
+
u2(f), (l2.length || $(f, "display-filter-buttons", "table") === "true") && e.push(Xe("Filter", { Area: vn(_.row.value, _.column.value) + ":" + vn(a.row.value, a.column.value) }, l2));
|
|
1502
|
+
}
|
|
1503
|
+
return e.length ? [{ source: "Gnumeric_XmlIO:sax", kind: "Filters", disposition: "retained", data: Xe("Filters", {}, e) }] : [];
|
|
1504
|
+
}
|
|
1505
|
+
var jn = ["urn:oasis:names:tc:opendocument:xmlns:table:1.0", "http://openoffice.org/2000/table"];
|
|
1506
|
+
function Ca(n, t, r, e) {
|
|
1507
|
+
let c = new Map(t.map((a) => (e(1 + a.name.length), [$n(a.name), a]))), m = /* @__PURE__ */ new Map(), f = new Map(t.map((a) => (e(), [a.id, { ...a.size ?? Ni }])));
|
|
1508
|
+
function d(a, l2) {
|
|
1509
|
+
let u2 = f.get(a.id);
|
|
1510
|
+
for (; u2.rows <= l2.endRow; ) e(), u2.rows *= 2;
|
|
1511
|
+
for (; u2.columns <= l2.endColumn; ) e(), u2.columns *= 2;
|
|
1512
|
+
}
|
|
1513
|
+
function i() {
|
|
1514
|
+
throw new Si("io", "E Invalid OpenDocument: invalid label range");
|
|
1515
|
+
}
|
|
1516
|
+
function o(a, l2) {
|
|
1517
|
+
return a.attributes.find((u2) => u2.localName === l2 && jn.includes(u2.namespace))?.value;
|
|
1518
|
+
}
|
|
1519
|
+
function _(a) {
|
|
1520
|
+
if (!a) return i();
|
|
1521
|
+
e(a.length);
|
|
1522
|
+
let l2 = Ai("=[" + a + "]", { maximumDepth: r.limits.formulaDepth, grammar: pi, position: { sheet: t[0]?.id ?? "", row: 0, column: 0 }, signal: r.signal, maximumLength: r.limits.workbookTextBytes ?? r.limits.inputBytes, maximumNodes: r.limits.workbookNodes ?? 1 / 0 });
|
|
1523
|
+
if (!l2.ok || l2.document.root.kind !== "reference") return i();
|
|
1524
|
+
let u2 = l2.document.root.first, S = l2.document.root.last ?? u2, b = u2.sheet === void 0 ? void 0 : c.get($n(u2.sheet)), g2 = S.sheet === void 0 ? b : c.get($n(S.sheet));
|
|
1525
|
+
if (!b || u2.workbook !== void 0 || S.workbook !== void 0 || g2 !== b || !u2.row || !u2.column || !S.row || !S.column) return i();
|
|
1526
|
+
let A = { startRow: u2.row.value, endRow: S.row.value, startColumn: u2.column.value, endColumn: S.column.value };
|
|
1527
|
+
return Object.values(A).some((h) => !Number.isSafeInteger(h) || h < 0) || A.startRow > A.endRow || A.startColumn > A.endColumn || A.endRow >= wa.rows || A.endColumn >= wa.columns ? i() : { sheet: b, range: A };
|
|
1528
|
+
}
|
|
1529
|
+
for (let a of n.children) if (e(), !(a.localName !== "label-ranges" || !jn.includes(a.namespace))) for (let l2 of a.children) {
|
|
1530
|
+
if (e(), l2.localName !== "label-range" || !jn.includes(l2.namespace)) continue;
|
|
1531
|
+
let u2 = o(l2, "orientation");
|
|
1532
|
+
u2 !== "row" && u2 !== "column" && i();
|
|
1533
|
+
let S = _(o(l2, "label-cell-range-address")), b = _(o(l2, "data-cell-range-address"));
|
|
1534
|
+
d(S.sheet, S.range), d(b.sheet, b.range);
|
|
1535
|
+
let g2 = m.get(S.sheet.id);
|
|
1536
|
+
g2 || (g2 = [], m.set(S.sheet.id, g2)), g2.push({ axis: u2, labels: S.range, data: b.range, ...b.sheet !== S.sheet ? { dataSheet: b.sheet.id } : {} });
|
|
1537
|
+
}
|
|
1538
|
+
return t.map((a) => {
|
|
1539
|
+
e();
|
|
1540
|
+
let l2 = m.get(a.id);
|
|
1541
|
+
return { ...a, size: f.get(a.id), ...l2 ? { labelRanges: l2 } : {} };
|
|
1542
|
+
});
|
|
1543
|
+
}
|
|
1544
|
+
var Kn = 1024;
|
|
1545
|
+
var Bt = { t: 3, m: 65536, p: 4, dkLen: 32, version: 19, maxmem: 64 * 1024 * 1024, asyncTick: 10 };
|
|
1546
|
+
var Ia = /* @__PURE__ */ new Map([["odf12-aes128-cbc", { cipher: "aes-cbc", keyBytes: 16 }], ["odf12-aes192-cbc", { cipher: "aes-cbc", keyBytes: 24 }], ["odf12-aes256-cbc", { cipher: "aes-cbc", keyBytes: 32 }], ["odf12-blowfish-cfb8", { cipher: "blowfish-cfb8", keyBytes: 16 }], ["odf12-blowfish-cfb64", { cipher: "blowfish-cfb64", keyBytes: 16 }], ["libreoffice-aes256-gcm", { cipher: "aes-gcm", keyBytes: 32 }]]);
|
|
1547
|
+
function Pt(n) {
|
|
1548
|
+
throw new Qn("unsupported-feature", `Unsupported ssconvert feature: encrypted OpenDocument ${n}`);
|
|
1549
|
+
}
|
|
1550
|
+
function qn() {
|
|
1551
|
+
throw new Qn("resource-limit", "ssconvert OpenDocument encrypted output bytes limit exceeded");
|
|
1552
|
+
}
|
|
1553
|
+
function Jn(n) {
|
|
1554
|
+
return btoa(String.fromCharCode(...n));
|
|
1555
|
+
}
|
|
1556
|
+
async function Zn(n, t, r, e) {
|
|
1557
|
+
let [{ cbc: c, gcm: m }, { argon2idAsync: f }] = await Promise.all([import("./aes-DUEAWV73-LZOSUFMR.js"), import("./argon2-WTUGKGHD-C2NVNIFH.js")]);
|
|
1558
|
+
(!t.password || !t.entropy) && Pt("export requires password and cryptographic entropy capabilities");
|
|
1559
|
+
let d = e.cipher === "aes-gcm", i = e.cipher === "blowfish-cfb8" || e.cipher === "blowfish-cfb64", o = i ? X : I2;
|
|
1560
|
+
if (d && (t.limits.encryptionMemoryBytes ?? Bt.maxmem) < Bt.maxmem) throw new Qn("resource-limit", "ssconvert OpenDocument encryption memory limit exceeded");
|
|
1561
|
+
let _ = e.cipher === "blowfish-cfb64" ? 8 : 1, a = [...n].filter(([R]) => R !== "mimetype" && R !== "META-INF/manifest.xml"), l2 = 0;
|
|
1562
|
+
for (let [, R] of a) l2 += R.length, l2 > t.limits.outputBytes && qn(), r.charge((d ? Bt.m * Bt.t * 1024 : Kn * Math.ceil(e.keyBytes / 20) * 128) + R.length * 8 + 128);
|
|
1563
|
+
let u2 = t.limits.inputBytes, S;
|
|
1564
|
+
t.signal.throwIfAborted();
|
|
1565
|
+
try {
|
|
1566
|
+
S = await t.password.read(Object.freeze({ purpose: "encrypt", format: "odf", algorithm: e.cipher, revision: d ? "libreoffice" : "1.2", encoding: "utf8", maxBytes: u2, signal: t.signal, ...t.outputFilename === void 0 ? {} : { outputFilename: t.outputFilename } }));
|
|
1567
|
+
} catch {
|
|
1568
|
+
t.signal.throwIfAborted(), Pt("password acquisition failed");
|
|
1569
|
+
}
|
|
1570
|
+
t.signal.throwIfAborted(), S === void 0 && Pt("password required"), (typeof S == "string" ? S.length > u2 || [...S].some((R) => {
|
|
1571
|
+
let N = R.codePointAt(0);
|
|
1572
|
+
return N >= 55296 && N <= 57343;
|
|
1573
|
+
}) : !(S instanceof Uint8Array) || S.length > u2) && Pt("password encoding or length");
|
|
1574
|
+
let b = typeof S == "string" ? new TextEncoder().encode(S) : new Uint8Array(S), g2 = /* @__PURE__ */ new Map(), A, h = 0;
|
|
1575
|
+
try {
|
|
1576
|
+
b.length > u2 && Pt("password encoding or length");
|
|
1577
|
+
try {
|
|
1578
|
+
new TextDecoder("utf-8", { fatal: true }).decode(b);
|
|
1579
|
+
} catch {
|
|
1580
|
+
Pt("password encoding or length");
|
|
1581
|
+
}
|
|
1582
|
+
A = o(b);
|
|
1583
|
+
for (let [R, N] of a) {
|
|
1584
|
+
let y = createCompressionCodec(), F = new y.CodecReader((async function* () {
|
|
1585
|
+
yield N;
|
|
1586
|
+
})(), t.signal), w = [], s = 0, O, E, p;
|
|
1587
|
+
try {
|
|
1588
|
+
for await (let j of y.codec(F, { mode: "deflate-raw", chunkSize: 16384 }, t.signal)) t.signal.throwIfAborted(), j.length > t.limits.outputBytes - h - s && qn(), r.charge(j.length), w.push(new Uint8Array(j)), s += j.length;
|
|
1589
|
+
let T2 = i || d ? 0 : 16 - s % 16;
|
|
1590
|
+
s + T2 + (d ? 28 : 0) > t.limits.outputBytes - h && qn(), i && r.charge((Math.ceil(s / _) + 521) * 128);
|
|
1591
|
+
let Y = d ? 28 : i ? 24 : 48, C;
|
|
1592
|
+
t.signal.throwIfAborted();
|
|
1593
|
+
try {
|
|
1594
|
+
C = await t.entropy.read(Object.freeze({ length: Y, signal: t.signal }));
|
|
1595
|
+
} catch {
|
|
1596
|
+
t.signal.throwIfAborted(), Pt("entropy acquisition failed");
|
|
1597
|
+
}
|
|
1598
|
+
t.signal.throwIfAborted(), (!(C instanceof Uint8Array) || C.length !== Y) && Pt(`entropy must provide exactly ${Y} bytes`), O = new Uint8Array(C);
|
|
1599
|
+
let I3 = O.subarray(0, 16), M = O.subarray(16, d ? 28 : i ? 24 : 32);
|
|
1600
|
+
p = new Uint8Array(s + T2);
|
|
1601
|
+
let x = 0;
|
|
1602
|
+
for (let j of w) p.set(j, x), x += j.length, j.fill(0);
|
|
1603
|
+
let W = o(p.subarray(0, Math.min(s, 1024)));
|
|
1604
|
+
T2 && (p.set(O.subarray(32, 32 + T2), s), p[p.length - 1] = T2), E = d ? await f(A, I3, Bt) : await Gn(A, I3, Kn, e.keyBytes, t), t.signal.throwIfAborted();
|
|
1605
|
+
let v = i ? await Tn(E, M, p, t.signal, "encrypt", _) : new Uint8Array(p.length + (d ? 28 : 0));
|
|
1606
|
+
d && (v.set(M), v.set(m(E, M).encrypt(p), 12));
|
|
1607
|
+
let ne = M;
|
|
1608
|
+
for (let j = 0; e.cipher === "aes-cbc" && j < p.length; j += 16384) {
|
|
1609
|
+
t.signal.throwIfAborted();
|
|
1610
|
+
let ue = c(E, ne, { disablePadding: true }).encrypt(p.subarray(j, j + 16384));
|
|
1611
|
+
v.set(ue, j), ne = v.subarray(j + ue.length - 16, j + ue.length), j && await new Promise((ve) => setTimeout(ve, 0));
|
|
1612
|
+
}
|
|
1613
|
+
t.signal.throwIfAborted(), h += v.length;
|
|
1614
|
+
let K = r.element, G = K("manifest:encryption-data", d ? {} : { "manifest:checksum-type": i ? "SHA1/1K" : bi.manifest + "#sha256-1k", "manifest:checksum": Jn(W) }, K("manifest:algorithm", { "manifest:algorithm-name": d ? "http://www.w3.org/2009/xmlenc11#aes256-gcm" : i ? "Blowfish CFB" : `http://www.w3.org/2001/04/xmlenc#aes${e.keyBytes * 8}-cbc`, "manifest:initialisation-vector": Jn(M) }) + K("manifest:key-derivation", { ...d ? { "manifest:key-derivation-name": "urn:org:documentfoundation:names:experimental:office:manifest:argon2id", "loext:argon2-iterations": Bt.t, "loext:argon2-memory": Bt.m, "loext:argon2-lanes": Bt.p } : { "manifest:key-derivation-name": "PBKDF2", "manifest:iteration-count": Kn }, "manifest:key-size": e.keyBytes, "manifest:salt": Jn(I3) }) + K("manifest:start-key-generation", { "manifest:start-key-generation-name": d ? "http://www.w3.org/2001/04/xmlenc#sha256" : "http://www.w3.org/2000/09/xmldsig#" + (i ? "sha1" : "sha256"), "manifest:key-size": o.outputLen }));
|
|
1615
|
+
g2.set(R, { bytes: v, size: N.length, declaration: G });
|
|
1616
|
+
} finally {
|
|
1617
|
+
E?.fill(0), O?.fill(0), p?.fill(0);
|
|
1618
|
+
for (let T2 of w) T2.fill(0);
|
|
1619
|
+
await F.close();
|
|
1620
|
+
}
|
|
1621
|
+
}
|
|
1622
|
+
return g2;
|
|
1623
|
+
} finally {
|
|
1624
|
+
b.fill(0), A?.fill(0);
|
|
1625
|
+
}
|
|
1626
|
+
}
|
|
1627
|
+
async function Ba(n, t, r, e, c, m) {
|
|
1628
|
+
let f = n.element, d = [], i = c ? new ZipDirectoryIndex(c, { maximumKeyLength: 1 / 0, signal: e.signal }) : /* @__PURE__ */ new Map(), o = c ? new ZipDirectoryIndex(c, { maximumKeyLength: 1 / 0, signal: e.signal }) : /* @__PURE__ */ new Map(), _ = c ? new ZipWriteChain(c, 16384, e.signal, async (s) => {
|
|
1629
|
+
s.throwIfAborted();
|
|
1630
|
+
}) : void 0, a = _ ? new Uint8Array(16384) : void 0, l2 = 0, u2 = 0, S = 0;
|
|
1631
|
+
function b() {
|
|
1632
|
+
a?.fill(0);
|
|
1633
|
+
}
|
|
1634
|
+
e.own(b);
|
|
1635
|
+
async function g2(...s) {
|
|
1636
|
+
if (!_) {
|
|
1637
|
+
d.push(...s);
|
|
1638
|
+
return;
|
|
1639
|
+
}
|
|
1640
|
+
async function* O() {
|
|
1641
|
+
yield* s;
|
|
1642
|
+
}
|
|
1643
|
+
for await (let E of hi(O(), "UTF-8", false, e)) {
|
|
1644
|
+
if (E.length > e.limits.outputBytes - u2) throw new Zt("resource-limit", "ssconvert OpenDocument output bytes limit exceeded");
|
|
1645
|
+
m?.(E.length), u2 += E.length;
|
|
1646
|
+
for (let p = 0; p < E.length; ) {
|
|
1647
|
+
let T2 = Math.min(a.length - l2, E.length - p);
|
|
1648
|
+
a.set(E.subarray(p, p + T2), l2), l2 += T2, p += T2, l2 === a.length && (await _.append([a], l2), l2 = 0);
|
|
1649
|
+
}
|
|
1650
|
+
}
|
|
1651
|
+
}
|
|
1652
|
+
async function* A() {
|
|
1653
|
+
if (!_) {
|
|
1654
|
+
yield* d;
|
|
1655
|
+
return;
|
|
1656
|
+
}
|
|
1657
|
+
l2 && (await _.append([a.subarray(0, l2)], l2), l2 = 0), a.fill(0), yield* _.read();
|
|
1658
|
+
}
|
|
1659
|
+
function h(s, O = /* @__PURE__ */ new Set(), E = 0) {
|
|
1660
|
+
if (n.charge(typeof s == "string" ? s.length : 1), !(s === null || typeof s != "object")) {
|
|
1661
|
+
if (O.has(s)) throw new Zt("invalid-request", "Invalid cyclic OpenDocument style metadata");
|
|
1662
|
+
if (E > (e.limits.xmlDepth ?? 1 / 0)) throw new Zt("resource-limit", "ssconvert OpenDocument style metadata depth limit exceeded");
|
|
1663
|
+
O.add(s);
|
|
1664
|
+
try {
|
|
1665
|
+
if (Array.isArray(s)) for (let p of s) h(p, O, E + 1);
|
|
1666
|
+
else for (let [p, T2] of Object.entries(s)) n.charge(p.length), h(T2, O, E + 1);
|
|
1667
|
+
} finally {
|
|
1668
|
+
O.delete(s);
|
|
1669
|
+
}
|
|
1670
|
+
}
|
|
1671
|
+
}
|
|
1672
|
+
async function R(s) {
|
|
1673
|
+
n.charge();
|
|
1674
|
+
let O = Vt(s, Da.style).name;
|
|
1675
|
+
O && await o.set(O, 0);
|
|
1676
|
+
for (let E of en(s)) await R(E);
|
|
1677
|
+
}
|
|
1678
|
+
for (let s of r.unsupportedRecords ?? []) if (["styles", "automatic-styles"].includes(s.kind)) {
|
|
1679
|
+
let O = pt(s.data)?.xml;
|
|
1680
|
+
h(O), await R(O);
|
|
1681
|
+
}
|
|
1682
|
+
async function N(s) {
|
|
1683
|
+
let O = s.style?.odf;
|
|
1684
|
+
O && (h(O), await R(O));
|
|
1685
|
+
}
|
|
1686
|
+
for (let s of r.sheets) for (let O of s.cells) await N(O);
|
|
1687
|
+
function y(s) {
|
|
1688
|
+
if (!s) return;
|
|
1689
|
+
let O = s.split(":");
|
|
1690
|
+
if (O.length !== 3 || O.some((E) => !E || [...E].some((p) => !"0123456789abcdefABCDEF".includes(p)))) throw new Zt("invalid-request", "Invalid OpenDocument style color");
|
|
1691
|
+
return "#" + O.map((E) => Math.round(parseInt(E, 16) / 257).toString(16).padStart(2, "0")).join("");
|
|
1692
|
+
}
|
|
1693
|
+
function F(s, O) {
|
|
1694
|
+
let E = { book: r, context: e, tick: n.charge }, p = yi(s, E);
|
|
1695
|
+
if (p.length !== 1) throw new Zt("unsupported-feature", "Unsupported ssconvert feature: multi-section ODF number format");
|
|
1696
|
+
let T2 = gi(p[0].pattern, E), Y = T2.filter((G) => !G.literal).map((G) => G.text).join("").toLowerCase();
|
|
1697
|
+
if (s === "General") return { xml: "", kind: "float" };
|
|
1698
|
+
let C = Y.includes("y") || Y.includes("d") ? "date" : Y.includes("h") || Y.includes("s") ? "time" : Y.includes("@") ? "string" : "float", I3 = "";
|
|
1699
|
+
if (C === "date" || C === "time") {
|
|
1700
|
+
let G = false;
|
|
1701
|
+
for (let j = 0; j < T2.length; j++) {
|
|
1702
|
+
let ue = T2[j], ve = ue.text.toLowerCase();
|
|
1703
|
+
if (ue.literal) {
|
|
1704
|
+
I3 += f("number:text", {}, n.escape(ue.text));
|
|
1705
|
+
continue;
|
|
1706
|
+
}
|
|
1707
|
+
ve === "[" && T2[j + 2]?.text === "]" && (G = true, j++);
|
|
1708
|
+
let ze = T2[j], ye = ze.text.toLowerCase();
|
|
1709
|
+
if (ye === "]") continue;
|
|
1710
|
+
let Q = 1;
|
|
1711
|
+
for (; T2[j + 1]?.text.toLowerCase() === ye && !T2[j + 1]?.literal; ) j++, Q++;
|
|
1712
|
+
let Ye = ye === "m" && (C === "time" || T2.slice(0, j).some((lt) => !lt.literal && lt.text.toLowerCase() === "h") && T2.slice(j + 1).some((lt) => !lt.literal && lt.text.toLowerCase() === "s")), et = ye === "y" ? "year" : ye === "d" ? Q > 2 ? "day-of-week" : "day" : ye === "m" ? Ye ? "minutes" : "month" : ye === "h" ? "hours" : ye === "s" ? "seconds" : void 0;
|
|
1713
|
+
et ? I3 += f("number:" + et, { "number:style": Q > 1 ? "long" : "short", "number:textual": ye === "m" && !Ye && Q > 2 ? "true" : void 0 }) : I3 += f("number:text", {}, n.escape(ze.text.repeat(Q)));
|
|
1714
|
+
}
|
|
1715
|
+
return { kind: C, xml: f("number:" + C + "-style", { "style:name": O, "number:truncate-on-overflow": G ? "false" : void 0 }, I3) };
|
|
1716
|
+
}
|
|
1717
|
+
if (C === "string") return { kind: C, xml: f("number:text-style", { "style:name": O }, f("number:text-content")) };
|
|
1718
|
+
let M = (G) => T2[G] && !T2[G].literal && "0#".includes(T2[G].text), x = T2.findIndex((G, j) => M(j)), W = T2.findIndex((G) => !G.literal && G.text === "."), v = -1;
|
|
1719
|
+
for (let G = 0; G < T2.length; G++) M(G) && (v = G);
|
|
1720
|
+
if (x < 0 || Y.includes("?") || Y.includes("e") || Y.includes("/")) throw new Zt("unsupported-feature", "Unsupported ssconvert feature: ODF numeric format " + s);
|
|
1721
|
+
let ne = W < 0 ? 0 : T2.slice(W + 1, v + 1).filter((G) => !G.literal && "0#".includes(G.text)).length, K = T2.slice(x, W < 0 ? v + 1 : W).filter((G) => !G.literal && G.text === "0").length;
|
|
1722
|
+
return I3 = T2.slice(0, x).map((G) => f("number:text", {}, n.escape(G.text))).join("") + f("number:number", { "number:decimal-places": ne, "number:min-integer-digits": K, "number:grouping": Y.includes(",") ? "true" : "false" }) + T2.slice(v + 1).map((G) => f("number:text", {}, n.escape(G.text))).join(""), { kind: C, xml: f(Y.includes("%") ? "number:percentage-style" : "number:number-style", { "style:name": O }, I3) };
|
|
1723
|
+
}
|
|
1724
|
+
async function w(s) {
|
|
1725
|
+
n.charge();
|
|
1726
|
+
let O = pt(s.style?.odf), E = s.style?.gnumeric, p = Vt(E), T2 = s.format ?? p.Format ?? "General";
|
|
1727
|
+
if (O) return { name: Vt(O, Da.style).name, kind: T2.toLowerCase().includes("y") || T2.toLowerCase().includes("d") ? "date" : T2.toLowerCase().includes("h") ? "time" : "float" };
|
|
1728
|
+
if (!E && T2 === "General") return { kind: "float" };
|
|
1729
|
+
h(E), n.charge(T2.length);
|
|
1730
|
+
let Y = JSON.stringify([E, T2]);
|
|
1731
|
+
n.charge(Y.length);
|
|
1732
|
+
let C = await i.get(Y), I3 = C ?? S, M = "ce" + I3;
|
|
1733
|
+
if (C === void 0) {
|
|
1734
|
+
for (; await o.get(M) !== void 0 || await o.get("N" + M) !== void 0; ) n.charge(), M = "ce" + ++I3;
|
|
1735
|
+
S = I3 + 1, await o.set(M, 0), await o.set("N" + M, 0);
|
|
1736
|
+
}
|
|
1737
|
+
let x = F(T2, "N" + M);
|
|
1738
|
+
if (C !== void 0) return { name: M, kind: x.kind };
|
|
1739
|
+
await i.set(Y, I3);
|
|
1740
|
+
let W = {}, v = {}, ne = {};
|
|
1741
|
+
W["fo:background-color"] = Number(p.Shade ?? 0) ? y(p.Back) : void 0, t && p.Shade !== void 0 && (W["gnm:pattern"] = p.Shade, W["gnm:background-colour"] = y(p.Back), W["gnm:pattern-colour"] = y(p.PatternColor)), p.WrapText !== void 0 && (W["fo:wrap-option"] = Number(p.WrapText) ? "wrap" : "no-wrap"), p.ShrinkToFit !== void 0 && (W["style:shrink-to-fit"] = String(!!Number(p.ShrinkToFit))), p.Rotation !== void 0 && (W["style:rotation-angle"] = p.Rotation), (p.Locked !== void 0 || p.Hidden !== void 0) && (W["style:cell-protect"] = Number(p.Hidden) ? "formula-hidden" + (Number(p.Locked) ? " protected" : "") : Number(p.Locked) ? "protected" : "none");
|
|
1742
|
+
let K = { GNM_HALIGN_LEFT: "start", GNM_HALIGN_RIGHT: "end", GNM_HALIGN_CENTER: "center", GNM_HALIGN_JUSTIFY: "justify", 2: "start", 4: "end", 8: "center" }, G = { GNM_VALIGN_TOP: "top", GNM_VALIGN_BOTTOM: "bottom", GNM_VALIGN_CENTER: "middle", 1: "top", 2: "bottom", 4: "middle" };
|
|
1743
|
+
ne["fo:text-align"] = K[p.HAlign ?? ""], W["style:vertical-align"] = G[p.VAlign ?? ""], v["fo:color"] = y(p.Fore);
|
|
1744
|
+
let j = en(E).find((Q) => pt(Q)?.name === "Font"), ue = Vt(j);
|
|
1745
|
+
if (j) {
|
|
1746
|
+
if (v["fo:font-family"] = typeof pt(j)?.text == "string" ? pt(j).text : void 0, v["fo:font-size"] = ue.Unit ? ue.Unit + "pt" : void 0, ue.Bold !== void 0 && (v["fo:font-weight"] = Number(ue.Bold) ? "bold" : "normal"), ue.Italic !== void 0 && (v["fo:font-style"] = Number(ue.Italic) ? "italic" : "normal"), ue.Underline !== void 0) {
|
|
1747
|
+
let Q = Number(ue.Underline), Ye = Q === 3 || Q === 4;
|
|
1748
|
+
v["style:text-underline-style"] = Q ? "solid" : "none", v["style:text-underline-type"] = Q === 2 || Q === 4 ? "double" : Q ? "single" : "none", v["style:text-underline-width"] = "auto", v["style:text-underline-color"] = "font-color", v["style:text-underline-mode"] = "continuous", t && Ye && (v["gnm:text-underline-placement"] = "low");
|
|
1749
|
+
}
|
|
1750
|
+
ue.StrikeThrough !== void 0 && (v["style:text-line-through-style"] = Number(ue.StrikeThrough) ? "solid" : "none"), ue.Script !== void 0 && (v["style:text-position"] = Number(ue.Script) < 0 ? "sub 80%" : Number(ue.Script) > 0 ? "super 80%" : "0% 100%");
|
|
1751
|
+
}
|
|
1752
|
+
let ve = en(en(E).find((Q) => pt(Q)?.name === "StyleBorder")), ze = { Top: "top", Bottom: "bottom", Left: "left", Right: "right" }, ye = ["none", "solid", "solid", "dashed", "dotted", "solid", "double", "solid", "dashed", "dash-dot", "dash-dot", "dash-dot-dot", "dash-dot-dot"];
|
|
1753
|
+
for (let Q of ve) {
|
|
1754
|
+
n.charge();
|
|
1755
|
+
let Ye = Vt(Q), et = ze[String(pt(Q)?.name)];
|
|
1756
|
+
et && (W["fo:border-" + et] = `${[0, 1, 2, 1, 1, 3, 1, 0.5, 2, 1, 2, 1, 2][Number(Ye.Style)] ?? 1}pt ${ye[Number(Ye.Style)] ?? "solid"} ${y(Ye.Color) ?? "#000000"}`);
|
|
1757
|
+
}
|
|
1758
|
+
return await g2(x.xml, f("style:style", { "style:name": M, "style:family": "table-cell", "style:data-style-name": x.xml ? "N" + M : void 0 }, f("style:table-cell-properties", W) + f("style:paragraph-properties", ne) + f("style:text-properties", v))), { name: M, kind: x.kind };
|
|
1759
|
+
}
|
|
1760
|
+
return { register: w, reserve: N, styles: d, render: A, dispose: b };
|
|
1761
|
+
}
|
|
1762
|
+
function Pa(n, t, r) {
|
|
1763
|
+
let e = { "style:print": "charts drawings objects" };
|
|
1764
|
+
for (let c of n) for (let m of en(c)) {
|
|
1765
|
+
t.charge();
|
|
1766
|
+
let f = pt(m), d = Vt(m);
|
|
1767
|
+
if (f?.name === "orientation" && typeof f.text == "string" && (e["style:print-orientation"] = f.text), f?.name === "Margins") for (let i of en(m)) {
|
|
1768
|
+
let o = pt(i)?.name, _ = Vt(i);
|
|
1769
|
+
typeof o == "string" && ["top", "bottom", "left", "right"].includes(o) && _.Points && (e["fo:margin-" + o] = _.Points + "pt");
|
|
1770
|
+
}
|
|
1771
|
+
f?.name === "Scale" && (d.type === "fit" ? r ? (Number(d.cols) > 0 && (e["gnm:scale-to-X"] = d.cols), Number(d.rows) > 0 && (e["gnm:scale-to-Y"] = d.rows)) : Number(d.cols) > 0 && Number(d.rows) > 0 && (e["style:scale-to-pages"] = Number(d.cols) * Number(d.rows)) : d.percentage && (e["style:scale-to"] = d.percentage + "%"));
|
|
1772
|
+
}
|
|
1773
|
+
return e;
|
|
1774
|
+
}
|
|
1775
|
+
function Fa(n, t) {
|
|
1776
|
+
let r = [], e = [];
|
|
1777
|
+
return { async put(c) {
|
|
1778
|
+
if (n.signal.throwIfAborted(), !t) return r.push(c), r.length;
|
|
1779
|
+
let m = t.allocate(24), f = new Uint8Array(24), d = new DataView(f.buffer);
|
|
1780
|
+
return c.forEach((i, o) => d.setFloat64(o * 8, i, true)), await t.write(m, f), n.signal.throwIfAborted(), m;
|
|
1781
|
+
}, async get(c) {
|
|
1782
|
+
if (n.signal.throwIfAborted(), !t) return r[c - 1];
|
|
1783
|
+
let m = new Uint8Array(await t.read(c, 24));
|
|
1784
|
+
if (n.signal.throwIfAborted(), m.length !== 24) throw new RangeError("Truncated ODF definition record");
|
|
1785
|
+
let f = new DataView(m.buffer), d = [f.getFloat64(0, true), f.getFloat64(8, true), f.getFloat64(16, true)];
|
|
1786
|
+
if (d.some((i) => !Number.isSafeInteger(i) || i < 0)) throw new RangeError("Invalid ODF definition record");
|
|
1787
|
+
return d;
|
|
1788
|
+
}, async putText(c) {
|
|
1789
|
+
if (n.signal.throwIfAborted(), !t) return e.push(c), e.length;
|
|
1790
|
+
let m = t.allocate(8 + c.length * 2), f = new Uint8Array(8), d = new Uint8Array(4096), i = new DataView(d.buffer);
|
|
1791
|
+
new DataView(f.buffer).setFloat64(0, c.length, true);
|
|
1792
|
+
try {
|
|
1793
|
+
await t.write(m, f);
|
|
1794
|
+
for (let o = 0; o < c.length; o += 2048) {
|
|
1795
|
+
n.signal.throwIfAborted();
|
|
1796
|
+
let _ = Math.min(2048, c.length - o);
|
|
1797
|
+
for (let a = 0; a < _; a++) i.setUint16(a * 2, c.charCodeAt(o + a), true);
|
|
1798
|
+
await t.write(m + 8 + o * 2, d.subarray(0, _ * 2));
|
|
1799
|
+
}
|
|
1800
|
+
return n.signal.throwIfAborted(), m;
|
|
1801
|
+
} finally {
|
|
1802
|
+
d.fill(0);
|
|
1803
|
+
}
|
|
1804
|
+
}, async *text(c) {
|
|
1805
|
+
if (n.signal.throwIfAborted(), !t) {
|
|
1806
|
+
yield e[c - 1];
|
|
1807
|
+
return;
|
|
1808
|
+
}
|
|
1809
|
+
let m = new Uint8Array(await t.read(c, 8));
|
|
1810
|
+
if (n.signal.throwIfAborted(), m.length !== 8) throw new RangeError("Truncated ODF definition text");
|
|
1811
|
+
let f = new DataView(m.buffer).getFloat64(0, true);
|
|
1812
|
+
if (!Number.isSafeInteger(f) || f < 0 || !Number.isSafeInteger(c + 8 + f * 2)) throw new RangeError("Invalid ODF definition text");
|
|
1813
|
+
for (let d = 0; d < f; d += 2048) {
|
|
1814
|
+
n.signal.throwIfAborted();
|
|
1815
|
+
let i = Math.min(2048, f - d), o = await t.read(c + 8 + d * 2, i * 2);
|
|
1816
|
+
if (n.signal.throwIfAborted(), o.length !== i * 2) throw new RangeError("Truncated ODF definition text");
|
|
1817
|
+
let _ = new DataView(o.buffer, o.byteOffset, o.byteLength), a = [];
|
|
1818
|
+
for (let l2 = 0; l2 < i; l2++) a.push(_.getUint16(l2 * 2, true));
|
|
1819
|
+
yield String.fromCharCode(...a);
|
|
1820
|
+
}
|
|
1821
|
+
} };
|
|
1822
|
+
}
|
|
1823
|
+
async function Ya(n, t, r, e, c) {
|
|
1824
|
+
let m = n.unsupportedRecords ?? [], f = Object.isFrozen(m) ? m : wi(m, r.limits), d = () => e ? new ZipDirectoryIndex(e, { maximumKeyLength: 1 / 0, signal: r.signal }) : /* @__PURE__ */ new Map(), i = () => ({ identities: d(), shapes: d(), count: 0, entries: e ? new Ci(e, 128) : /* @__PURE__ */ new Map() }), o = /* @__PURE__ */ new Map(), _ = d(), a = d(), l2 = Fa(r, e);
|
|
1825
|
+
function u2(R) {
|
|
1826
|
+
let N = o.get(R);
|
|
1827
|
+
return N || (N = i(), o.set(R, N)), N;
|
|
1828
|
+
}
|
|
1829
|
+
function S(R, N) {
|
|
1830
|
+
return Ua(Nn(f[R - 1]?.data)?.xml)[N];
|
|
1831
|
+
}
|
|
1832
|
+
async function b(R, N, y) {
|
|
1833
|
+
let F = await R.identities.get(N);
|
|
1834
|
+
F === void 0 && (F = R.count++, await R.identities.set(N, F)), await R.entries.set(BigInt(F), BigInt(y));
|
|
1835
|
+
}
|
|
1836
|
+
let g2 = 0;
|
|
1837
|
+
for (let [R, N] of f.entries()) {
|
|
1838
|
+
if (t.charge(), N.source !== "Gnumeric_OpenCalc:openoffice") continue;
|
|
1839
|
+
let y = Nn(N.data), F = N.kind === "automatic-styles" ? y?.packagePart === "styles.xml" ? "stylesAutomatic" : "contentAutomatic" : N.kind === "master-styles" ? "masters" : N.kind === "font-face-decls" ? "fonts" : N.kind === "styles" ? "styles" : void 0;
|
|
1840
|
+
if (!F) continue;
|
|
1841
|
+
let w = u2(F);
|
|
1842
|
+
for (let [s, O] of Ua(y?.xml).entries()) {
|
|
1843
|
+
t.charge();
|
|
1844
|
+
let E = Nn(O), p = ea(O, Dn.style), T2 = p.name ? JSON.stringify([E?.namespace, E?.name, p.family ?? "", p.name]) : "anonymous:" + g2++;
|
|
1845
|
+
await b(w, T2, await l2.put([R + 1, s, 0])), p.name && await _.set(p.name, 0);
|
|
1846
|
+
}
|
|
1847
|
+
}
|
|
1848
|
+
for (let R of o.values()) for await (let [, N] of R.entries.entries()) {
|
|
1849
|
+
let [y, F] = await l2.get(Number(N)), w = S(y, F);
|
|
1850
|
+
t.charge();
|
|
1851
|
+
let s = Nn(w), O = ea(w, Dn.style).name;
|
|
1852
|
+
if (!s || !O || !Array.isArray(s.attributes)) continue;
|
|
1853
|
+
let E = s.attributes.filter((p) => {
|
|
1854
|
+
t.charge();
|
|
1855
|
+
let T2 = Nn(p);
|
|
1856
|
+
return T2?.namespace !== Dn.style || T2?.name !== "name";
|
|
1857
|
+
});
|
|
1858
|
+
await R.shapes.set(t.retained({ ...s, attributes: E }), Number(N));
|
|
1859
|
+
}
|
|
1860
|
+
async function A(R, N, y, F, w = "") {
|
|
1861
|
+
let s = t.element(N, F, w), O = u2(R), E = await O.shapes.get(s);
|
|
1862
|
+
if (E !== void 0) {
|
|
1863
|
+
let [I3, M, x] = await l2.get(E);
|
|
1864
|
+
if (I3) return ea(S(I3, M), Dn.style).name;
|
|
1865
|
+
let W = "";
|
|
1866
|
+
for await (let v of l2.text(x)) W += v;
|
|
1867
|
+
return W;
|
|
1868
|
+
}
|
|
1869
|
+
let p = await a.get(y) ?? 0, T2 = p ? y + "_" + p : y;
|
|
1870
|
+
for (; await _.get(T2) !== void 0; ) t.charge(), T2 = y + "_" + ++p;
|
|
1871
|
+
await _.set(T2, 0), await a.set(y, p + 1);
|
|
1872
|
+
let Y = t.element(N, { "style:name": T2, ...F }, w);
|
|
1873
|
+
if (e && c) {
|
|
1874
|
+
let I3 = 0;
|
|
1875
|
+
for (let M of Y) {
|
|
1876
|
+
r.signal.throwIfAborted();
|
|
1877
|
+
let x = M.codePointAt(0);
|
|
1878
|
+
I3 += x < 128 ? 1 : x < 2048 ? 2 : x < 65536 ? 3 : 4;
|
|
1879
|
+
}
|
|
1880
|
+
c(I3);
|
|
1881
|
+
}
|
|
1882
|
+
let C = await l2.put([0, await l2.putText(Y), await l2.putText(T2)]);
|
|
1883
|
+
return await b(O, "generated:" + T2, C), await O.shapes.set(s, C), T2;
|
|
1884
|
+
}
|
|
1885
|
+
async function* h(R) {
|
|
1886
|
+
let N = o.get(R);
|
|
1887
|
+
if (N) for await (let [, y] of N.entries.entries()) {
|
|
1888
|
+
t.charge();
|
|
1889
|
+
let [F, w] = await l2.get(Number(y));
|
|
1890
|
+
F ? yield* t.retainedFragments(S(F, w)) : yield* l2.text(w);
|
|
1891
|
+
}
|
|
1892
|
+
}
|
|
1893
|
+
return { register: A, render: h };
|
|
1894
|
+
}
|
|
1895
|
+
var xa = Object.freeze({ ABS: "ABS", ACCRINT: "ACCRINT", ACCRINTM: "ACCRINTM", ACOS: "ACOS", ACOSH: "ACOSH", ACOT: "ACOT", ACOTH: "ACOTH", ADDRESS: "ADDRESS", AMORDEGRC: "AMORDEGRC", AMORLINC: "AMORLINC", AND: "AND", ARABIC: "ARABIC", AREAS: "AREAS", ASC: "ASC", ASIN: "ASIN", ASINH: "ASINH", ATAN: "ATAN", ATAN2: "ATAN2", ATANH: "ATANH", AVEDEV: "AVEDEV", AVERAGE: "AVERAGE", AVERAGEA: "AVERAGEA", AVERAGEIF: "AVERAGEIF", AVERAGEIFS: "AVERAGEIFS", "BINOM.DIST.RANGE": "B", BASE: "BASE", BESSELI: "BESSELI", BESSELJ: "BESSELJ", BESSELK: "BESSELK", BESSELY: "BESSELY", BETADIST: "BETADIST", BETAINV: "BETAINV", BIN2DEC: "BIN2DEC", BIN2HEX: "BIN2HEX", BIN2OCT: "BIN2OCT", BINOMDIST: "BINOMDIST", BITAND: "BITAND", BITLSHIFT: "BITLSHIFT", BITOR: "BITOR", BITRSHIFT: "BITRSHIFT", BITXOR: "BITXOR", CEIL: "CEILING", CELL: "CELL", CHAR: "CHAR", CHOOSE: "CHOOSE", CLEAN: "CLEAN", CODE: "CODE", COLUMN: "COLUMN", COLUMNS: "COLUMNS", "CONFIDENCE.T": "COM.MICROSOFT.CONFIDENCE.T", COMBIN: "COMBIN", COMBINA: "COMBINA", COMPLEX: "COMPLEX", CONCAT: "COM.MICROSOFT.CONCAT", CONCATENATE: "COM.MICROSOFT.CONCAT", CONFIDENCE: "CONFIDENCE", CONVERT: "CONVERT", CORREL: "CORREL", COS: "COS", COSH: "COSH", COT: "COT", COTH: "COTH", COUNT: "COUNT", COUNTA: "COUNTA", COUNTBLANK: "COUNTBLANK", COUNTIF: "COUNTIF", COUNTIFS: "COUNTIFS", COUPDAYBS: "COUPDAYBS", COUPDAYS: "COUPDAYS", COUPDAYSNC: "COUPDAYSNC", COUPNCD: "COUPNCD", COUPNUM: "COUPNUM", COUPPCD: "COUPPCD", COVAR: "COVAR", CRITBINOM: "CRITBINOM", CSC: "CSC", CSCH: "CSCH", CUMIPMT: "CUMIPMT", CUMPRINC: "CUMPRINC", DATE: "DATE", DATEDIF: "DATEDIF", DATEVALUE: "DATEVALUE", DAVERAGE: "DAVERAGE", DAY: "DAY", DAYS: "DAYS", DAYS360: "DAYS360", DB: "DB", DCOUNT: "DCOUNT", DCOUNTA: "DCOUNTA", DDB: "DDB", DEC2BIN: "DEC2BIN", DEC2HEX: "DEC2HEX", DEC2OCT: "DEC2OCT", DECIMAL: "DECIMAL", DEGREES: "DEGREES", DELTA: "DELTA", DEVSQ: "DEVSQ", DGET: "DGET", DISC: "DISC", DMAX: "DMAX", DMIN: "DMIN", DOLLAR: "DOLLAR", DOLLARDE: "DOLLARDE", DOLLARFR: "DOLLARFR", DPRODUCT: "DPRODUCT", DSTDEV: "DSTDEV", DSTDEVP: "DSTDEVP", DSUM: "DSUM", DURATION: "DURATION", DVAR: "DVAR", DVARP: "DVARP", EDATE: "EDATE", EFFECT: "EFFECT", EOMONTH: "EOMONTH", ERF: "ERF", ERFC: "ERFC", "ERROR.TYPE": "ERROR.TYPE", EUROCONVERT: "EUROCONVERT", EVEN: "EVEN", EXACT: "EXACT", EXP: "EXP", EXPONDIST: "EXPONDIST", FACT: "FACT", FACTDOUBLE: "FACTDOUBLE", FALSE: "FALSE", FIND: "FIND", FINDB: "FINDB", FISHER: "FISHER", FISHERINV: "FISHERINV", FIXED: "FIXED", FLOOR: "FLOOR", FORECAST: "FORECAST", "GET.FORMULA": "FORMULA", FREQUENCY: "FREQUENCY", FTEST: "FTEST", FV: "FV", FVSCHEDULE: "FVSCHEDULE", GAMMA: "GAMMA", GAMMADIST: "GAMMADIST", GAMMAINV: "GAMMAINV", GAMMALN: "GAMMALN", GCD: "GCD", GEOMEAN: "GEOMEAN", GESTEP: "GESTEP", GETPIVOTDATA: "GETPIVOTDATA", GROWTH: "GROWTH", HARMEAN: "HARMEAN", HEX2BIN: "HEX2BIN", HEX2DEC: "HEX2DEC", HEX2OCT: "HEX2OCT", HLOOKUP: "HLOOKUP", HOUR: "HOUR", HYPERLINK: "HYPERLINK", HYPGEOMDIST: "HYPGEOMDIST", IF: "IF", IFERROR: "IFERROR", IFNA: "IFNA", IFS: "COM.MICROSOFT.IFS", IMABS: "IMABS", IMAGINARY: "IMAGINARY", IMARGUMENT: "IMARGUMENT", IMCONJUGATE: "IMCONJUGATE", IMCOS: "IMCOS", IMCOT: "IMCOT", IMCSC: "IMCSC", IMCSCH: "IMCSCH", IMDIV: "IMDIV", IMEXP: "IMEXP", IMLN: "IMLN", IMLOG10: "IMLOG10", IMLOG2: "IMLOG2", IMPOWER: "IMPOWER", IMPRODUCT: "IMPRODUCT", IMREAL: "IMREAL", IMSEC: "IMSEC", IMSECH: "IMSECH", IMSIN: "IMSIN", IMSQRT: "IMSQRT", IMSUB: "IMSUB", IMSUM: "IMSUM", IMTAN: "IMTAN", INDEX: "INDEX", INDIRECT: "INDIRECT", INFO: "INFO", INT: "INT", INTERCEPT: "INTERCEPT", INTRATE: "INTRATE", IPMT: "IPMT", IRR: "IRR", ISBLANK: "ISBLANK", ISERR: "ISERR", ISERROR: "ISERROR", ISEVEN: "ISEVEN", ISFORMULA: "ISFORMULA", ISLOGICAL: "ISLOGICAL", ISNA: "ISNA", ISNONTEXT: "ISNONTEXT", ISNUMBER: "ISNUMBER", ISODD: "ISODD", ISOWEEKNUM: "ISOWEEKNUM", ISPMT: "ISPMT", ISREF: "ISREF", ISTEXT: "ISTEXT", JIS: "JIS", KURT: "KURT", LARGE: "LARGE", LCM: "LCM", LEFT: "LEFT", LEFTB: "LEFTB", CHIDIST: "LEGACY.CHIDIST", CHIINV: "LEGACY.CHIINV", CHITEST: "LEGACY.CHITEST", FDIST: "LEGACY.FDIST", FINV: "LEGACY.FINV", NORMSDIST: "LEGACY.NORMSDIST", NORMSINV: "LEGACY.NORMSINV", TDIST: "LEGACY.TDIST", LEN: "LEN", LENB: "LENB", LINEST: "LINEST", LN: "LN", LOG: "LOG", LOG10: "LOG10", LOGEST: "LOGEST", LOGINV: "LOGINV", LOGNORMDIST: "LOGNORMDIST", LOOKUP: "LOOKUP", LOWER: "LOWER", MATCH: "MATCH", MAX: "MAX", MAXA: "MAXA", MAXIFS: "COM.MICROSOFT.MAXIFS", MDETERM: "MDETERM", MDURATION: "MDURATION", MEDIAN: "MEDIAN", MID: "MID", MIDB: "MIDB", MIN: "MIN", MINA: "MINA", MINIFS: "COM.MICROSOFT.MINIFS", MINUTE: "MINUTE", MINVERSE: "MINVERSE", MIRR: "MIRR", MMULT: "MMULT", MOD: "MOD", MODE: "MODE", "MODE.MULT": "COM.MICROSOFT.MODE.MULT", MONTH: "MONTH", MROUND: "MROUND", MULTINOMIAL: "MULTINOMIAL", MUNIT: "MUNIT", N: "N", NA: "NA", NEGBINOMDIST: "NEGBINOMDIST", NETWORKDAYS: "NETWORKDAYS", NOMINAL: "NOMINAL", NORMDIST: "NORMDIST", NORMINV: "NORMINV", NOT: "NOT", NOW: "NOW", NPER: "NPER", NPV: "NPV", NUMBERVALUE: "NUMBERVALUE", OCT2BIN: "OCT2BIN", OCT2DEC: "OCT2DEC", OCT2HEX: "OCT2HEX", ODD: "ODD", ODDFPRICE: "ODDFPRICE", ODDFYIELD: "ODDFYIELD", ODDLPRICE: "ODDLPRICE", ODDLYIELD: "ODDLYIELD", OFFSET: "OFFSET", OR: "OR", G_DURATION: "PDURATION", PEARSON: "PEARSON", PERCENTILE: "PERCENTILE", "PERCENTILE.EXC": "COM.MICROSOFT.PERCENTILE.EXC", PERCENTRANK: "PERCENTRANK", "PERCENTRANK.EXC": "COM.MICROSOFT.PERCENTRANK.EXC", PERMUT: "PERMUT", PERMUTATIONA: "PERMUTATIONA", PI: "PI", PMT: "PMT", POISSON: "POISSON", POWER: "POWER", PPMT: "PPMT", PRICE: "PRICE", PRICEDISC: "PRICEDISC", PRICEMAT: "PRICEMAT", PROB: "PROB", PRODUCT: "PRODUCT", PROPER: "PROPER", PV: "PV", QUARTILE: "QUARTILE", "QUARTILE.EXC": "COM.MICROSOFT.QUARTILE.EXC", QUOTIENT: "QUOTIENT", RADIANS: "RADIANS", RAND: "RAND", RANDBETWEEN: "RANDBETWEEN", RANK: "RANK", "RANK.AVG": "COM.MICROSOFT.RANK.AVG", RATE: "RATE", RECEIVED: "RECEIVED", REPLACE: "REPLACE", REPLACEB: "REPLACEB", REPT: "REPT", RIGHT: "RIGHT", RIGHTB: "RIGHTB", ROMAN: "ROMAN", ROUND: "ROUND", ROUNDDOWN: "ROUNDDOWN", ROUNDUP: "ROUNDUP", ROW: "ROW", ROWS: "ROWS", RRI: "RRI", RSQ: "RSQ", SEARCH: "SEARCH", SEARCHB: "SEARCHB", SEC: "SEC", SECH: "SECH", SECOND: "SECOND", SERIESSUM: "SERIESSUM", SHEET: "SHEET", SHEETS: "SHEETS", SIGN: "SIGN", SIN: "SIN", SINH: "SINH", SKEW: "SKEW", SKEWP: "SKEWP", SLN: "SLN", SLOPE: "SLOPE", SMALL: "SMALL", SQRT: "SQRT", SQRTPI: "SQRTPI", STANDARDIZE: "STANDARDIZE", STDEV: "STDEV", STDEVA: "STDEVA", STDEVP: "STDEVP", STDEVPA: "STDEVPA", STEYX: "STEYX", SUBSTITUTE: "SUBSTITUTE", SUBTOTAL: "SUBTOTAL", SUM: "SUM", SUMIF: "SUMIF", SUMIFS: "SUMIFS", "ODF.SUMPRODUCT": "SUMPRODUCT", SUMSQ: "SUMSQ", SUMX2MY2: "SUMX2MY2", SUMX2PY2: "SUMX2PY2", SUMXMY2: "SUMXMY2", SWITCH: "COM.MICROSOFT.SWITCH", SYD: "SYD", T: "T", TAN: "TAN", TANH: "TANH", TBILLEQ: "TBILLEQ", TBILLPRICE: "TBILLPRICE", TBILLYIELD: "TBILLYIELD", TEXT: "TEXT", TEXTJOIN: "COM.MICROSOFT.TEXTJOIN", "ODF.TIME": "TIME", TIMEVALUE: "TIMEVALUE", TINV: "TINV", TODAY: "TODAY", TRANSPOSE: "TRANSPOSE", TREND: "TREND", TRIM: "TRIM", TRIMMEAN: "TRIMMEAN", TRUE: "TRUE", TRUNC: "TRUNC", TTEST: "TTEST", TYPE: "TYPE", UNICHAR: "UNICHAR", UNICODE: "UNICODE", UPPER: "UPPER", VALUE: "VALUE", VAR: "VAR", VARA: "VARA", VARP: "VARP", VARPA: "VARPA", VDB: "VDB", VLOOKUP: "VLOOKUP", WEEKDAY: "WEEKDAY", WEEKNUM: "WEEKNUM", WEIBULL: "WEIBULL", WORKDAY: "WORKDAY", XIRR: "XIRR", XNPV: "XNPV", XOR: "XOR", YEAR: "YEAR", YEARFRAC: "YEARFRAC", YIELD: "YIELD", YIELDDISC: "YIELDDISC", YIELDMAT: "YIELDMAT", ZTEST: "ZTEST" });
|
|
1896
|
+
async function Ha(n, t, r, e, c, m, f, d, i) {
|
|
1897
|
+
let o = c.element, _ = An(n), a = await m.register({ style: { gnumeric: n }, ..._.Format ? { format: _.Format } : {} }), l2 = ta(n), u2 = Di(e.name, "'", Bi) + "." + Mi(t.startRow, t.startColumn);
|
|
1898
|
+
function S(s, O) {
|
|
1899
|
+
let E = ta(s).find((T2) => zt(T2)?.name === O), p = zt(E)?.text;
|
|
1900
|
+
return typeof p == "string" ? d(p.startsWith("=") ? p : "=" + p, e, t.startRow, t.startColumn).slice(4) : "";
|
|
1901
|
+
}
|
|
1902
|
+
let b = "", g2 = "";
|
|
1903
|
+
for (let s of l2.filter((O) => zt(O)?.name === "Condition")) {
|
|
1904
|
+
c.charge();
|
|
1905
|
+
let O = An(s), E = Number(O.Operator), p = ta(s).find((x) => zt(x)?.name === "Style"), T2 = S(s, "Expression0"), Y = S(s, "Expression1"), C = ["", "", "=", "!=", ">", "<", ">=", "<="];
|
|
1906
|
+
if (!p || !T2 || !Number.isInteger(E) || E < 0 || E > 8) {
|
|
1907
|
+
await f.diagnostic?.({ code: "odf-write-loss", severity: "warning", message: `ODF writer does not export sheet '${e.name}' conditional operator '${O.Operator ?? ""}'` });
|
|
1908
|
+
continue;
|
|
1909
|
+
}
|
|
1910
|
+
let I3 = (await m.register({ style: { gnumeric: p } })).name, M = E === 0 || E === 1 ? `of:cell-content-is-${E === 1 ? "not-" : ""}between(${T2};${Y})` : E === 8 ? `of:is-true-formula(${T2})` : "of:cell-content()" + C[E] + T2;
|
|
1911
|
+
b += o("style:map", { "style:apply-style-name": I3, "style:condition": M, "style:base-cell-address": u2 });
|
|
1912
|
+
}
|
|
1913
|
+
let A = b ? r + "c" : a.name, h = b ? o("style:style", { "style:name": A, "style:family": "table-cell", "style:parent-style-name": a.name }, b) : "", R = l2.find((s) => zt(s)?.name === "Validation"), N = l2.find((s) => zt(s)?.name === "InputMessage"), y;
|
|
1914
|
+
if (R || N) {
|
|
1915
|
+
let s = An(R), O = (s.Type ?? "GNM_VALIDATION_TYPE_ANY").slice(20), E = (s.Operator ?? "GNM_VALIDATION_OP_NONE").slice(18), p = S(R, "Expression0"), T2 = S(R, "Expression1"), Y = { ANY: "", AS_INT: "cell-content-is-whole-number() and ", AS_NUMBER: "cell-content-is-decimal-number() and ", AS_DATE: "cell-content-is-date() and ", AS_TIME: "cell-content-is-time() and " }, C = { EQUAL: " = ", NOT_EQUAL: " != ", GT: " > ", LT: " < ", GTE: " >= ", LTE: " <= " }, I3 = O === "TEXT_LENGTH", M = "";
|
|
1916
|
+
if (O === "CUSTOM") M = `of:is-true-formula(${p})`;
|
|
1917
|
+
else if (O === "IN_LIST") M = `of:cell-content-is-in-list(${p})`;
|
|
1918
|
+
else if (Object.hasOwn(Y, O) || I3) {
|
|
1919
|
+
let x = "of:" + (Y[O] ?? ""), W = I3 ? "cell-content-text-length" : "cell-content";
|
|
1920
|
+
E === "NONE" ? M = x + "is-true-formula(1)" : E === "BETWEEN" || E === "NOT_BETWEEN" ? M = `${x}${W}-is-${E === "NOT_BETWEEN" ? "not-" : ""}between(${p};${T2})` : Object.hasOwn(C, E) && (M = x + W + "()" + C[E] + p);
|
|
1921
|
+
}
|
|
1922
|
+
if (!M) await f.diagnostic?.({ code: "odf-write-loss", severity: "warning", message: `ODF writer does not export sheet '${e.name}' validation type/operator '${O}/${E}'` });
|
|
1923
|
+
else {
|
|
1924
|
+
y = r + "v";
|
|
1925
|
+
let x = An(N), W = (N ? o("table:help-message", { "table:display": "true", "table:title": x.Title }, o("text:p", {}, c.text(x.Message ?? ""))) : "") + (R && s.Style !== "GNM_VALIDATION_STYLE_NONE" ? o("table:error-message", { "table:display": "true", "table:title": s.Title, "table:message-type": s.Style?.endsWith("WARNING") ? "warning" : s.Style?.endsWith("INFO") ? "information" : "stop" }, o("text:p", {}, c.text(s.Message ?? ""))) : "");
|
|
1926
|
+
g2 = o("table:content-validation", { "table:name": y, "table:condition": M, "table:base-cell-address": u2, "table:allow-empty-cell": s.AllowBlank === "1" ? "true" : "false", "table:display-list": s.UseDropdown === "1" ? "unsorted" : "none" }, W);
|
|
1927
|
+
}
|
|
1928
|
+
}
|
|
1929
|
+
let F = l2.find((s) => zt(s)?.name === "HyperLink"), w = An(F);
|
|
1930
|
+
return { styleName: A, styleXml: h, validationName: y, validationXml: g2, ...w.target ? { link: { "xlink:href": w.type === "GnmHLinkCurWB" ? Pi(w.target, "export", c.charge, i) : w.target, "xlink:type": "simple", "office:title": w.tip } } : {} };
|
|
1931
|
+
}
|
|
1932
|
+
var Qe = "urn:oasis:names:tc:opendocument:xmlns:";
|
|
1933
|
+
var ot = { OO_NS_OFFICE: [Qe + "office:1.0", "http://openoffice.org/2000/office"], OO_NS_TABLE: [Qe + "table:1.0", "http://openoffice.org/2000/table"], OO_NS_TEXT: [Qe + "text:1.0", "http://openoffice.org/2000/text"], OO_NS_STYLE: [Qe + "style:1.0", "http://openoffice.org/2000/style"], OO_NS_NUMBER: [Qe + "datastyle:1.0", "http://openoffice.org/2000/datastyle"], OO_NS_DRAW: [Qe + "drawing:1.0", "http://openoffice.org/2000/drawing"], OO_NS_CHART: [Qe + "chart:1.0", "http://openoffice.org/2000/chart"], OO_NS_CHART_OOO: ["http://openoffice.org/2010/chart"], OO_NS_DC: ["http://purl.org/dc/elements/1.1/"], OO_NS_META: [Qe + "meta:1.0", "http://openoffice.org/2000/meta"], OO_NS_SVG: [Qe + "svg-compatible:1.0", "http://www.w3.org/2000/svg"], OO_NS_FORM: [Qe + "form:1.0", "http://openoffice.org/2000/form"], OO_NS_SCRIPT: [Qe + "script:1.0", "http://openoffice.org/2000/script"], OO_NS_LOCALC_EXT: ["urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0"], OO_GNUM_NS_EXT: ["http://www.gnumeric.org/odf-extension/1.0"] };
|
|
1934
|
+
var an = ot.OO_NS_OFFICE;
|
|
1935
|
+
var _t = ot.OO_NS_TABLE;
|
|
1936
|
+
var on = ot.OO_NS_TEXT;
|
|
1937
|
+
var st = ot.OO_NS_STYLE;
|
|
1938
|
+
var bt = ot.OO_NS_NUMBER;
|
|
1939
|
+
var io = /* @__PURE__ */ new Map([["application/vnd.oasis.opendocument.spreadsheet", false], ["application/vnd.oasis.opendocument.spreadsheet-template", false], ["application/vnd.sun.xml.calc", true], ["application/vnd.sun.xml.calc.template", true]]);
|
|
1940
|
+
var oo = Object.fromEntries(Object.entries(ba).map(([n, t]) => {
|
|
1941
|
+
let r = /* @__PURE__ */ new Map();
|
|
1942
|
+
for (let e of t.split(`
|
|
1943
|
+
`)) {
|
|
1944
|
+
let c = e.split(" "), m = c[0] + ":" + c[3], f = r.get(m) ?? [];
|
|
1945
|
+
f.push(c), r.set(m, f);
|
|
1946
|
+
}
|
|
1947
|
+
return [n, r];
|
|
1948
|
+
}));
|
|
1949
|
+
function pe(n) {
|
|
1950
|
+
throw new he("io", `E Invalid OpenDocument: ${n}`);
|
|
1951
|
+
}
|
|
1952
|
+
function de(n) {
|
|
1953
|
+
throw new he("resource-limit", `ssconvert OpenDocument ${n} limit exceeded`);
|
|
1954
|
+
}
|
|
1955
|
+
function z(n, t, r = _t) {
|
|
1956
|
+
return n?.attributes.find((e) => e.localName === t && r.includes(e.namespace))?.value;
|
|
1957
|
+
}
|
|
1958
|
+
function Ft(n, t, r = _t) {
|
|
1959
|
+
return n?.children.filter((e) => e.localName === t && r.includes(e.namespace)) ?? [];
|
|
1960
|
+
}
|
|
1961
|
+
function Tt(n, t = 1) {
|
|
1962
|
+
let r = n === void 0 ? t : Number(n);
|
|
1963
|
+
return (!Number.isSafeInteger(r) || r < 0) && pe("invalid repeat/span count"), r;
|
|
1964
|
+
}
|
|
1965
|
+
function pn(n) {
|
|
1966
|
+
return { name: n.localName, namespace: n.namespace, attributes: n.attributes.filter((t) => t.namespace !== "http://www.w3.org/2000/xmlns/").map((t) => ({ name: t.localName, namespace: t.namespace, value: t.value })), text: n.text, children: n.children.map(pn), ...n.children.length ? { content: n.content.flatMap((t) => t.kind === "text" || t.kind === "cdata" ? [{ kind: "text", text: t.text }] : t.kind === "element" ? [{ kind: "element", index: n.children.indexOf(t) }] : []) } : {} };
|
|
1967
|
+
}
|
|
1968
|
+
function tn(n, t = {}) {
|
|
1969
|
+
return { source: "Gnumeric_OpenCalc:openoffice", kind: n.localName, disposition: "retained", data: { xml: pn(n), ...t } };
|
|
1970
|
+
}
|
|
1971
|
+
async function Un(n, t, r = "odf-import-warning") {
|
|
1972
|
+
let e = qi(t.environment) === "C" ? Array.from(n, (c) => c.codePointAt(0) < 128 ? c : "?").join("") : n;
|
|
1973
|
+
await t.diagnostic?.({ code: r, severity: "warning", message: n, bytes: new TextEncoder().encode(e) });
|
|
1974
|
+
}
|
|
1975
|
+
function qa(n) {
|
|
1976
|
+
return { maxArchiveBytes: Math.min(n.limits.inputBytes, n.limits.compressedBytes ?? n.limits.inputBytes), maxEntryBytes: Math.min(n.limits.inputBytes, n.limits.inflatedBytes ?? n.limits.inputBytes), maxTotalBytes: Math.min(n.limits.inputBytes, n.limits.inflatedBytes ?? n.limits.inputBytes), maxMembers: n.limits.zipEntries ?? n.limits.workbookNodes ?? 1 / 0, maxPathBytes: 1 / 0, maxDepth: n.limits.xmlDepth ?? 1 / 0, maxPaxBytes: n.limits.inputBytes, maxTextBytes: n.limits.workbookTextBytes ?? n.limits.inputBytes, chunkSize: 16384 };
|
|
1977
|
+
}
|
|
1978
|
+
function Ja(n, t) {
|
|
1979
|
+
let r = "compressedSize" in n ? n.compressedSize : n.data.length;
|
|
1980
|
+
return n.size > (t.limits.zipRatio ?? 1 / 0) * Math.max(1, r) && de("ZIP ratio"), n.directory ? false : ((n.symlink || n.name.startsWith("/") || n.name.includes("\\") || n.name.split("/").some((e) => !e || e === "." || e === "..")) && pe("noncanonical ZIP member"), true);
|
|
1981
|
+
}
|
|
1982
|
+
function Wa(n, t) {
|
|
1983
|
+
let r = /* @__PURE__ */ new Map();
|
|
1984
|
+
for (let e of n) Ja(e, t) && r.set(e.name, e);
|
|
1985
|
+
return r;
|
|
1986
|
+
}
|
|
1987
|
+
async function Qa(n, t) {
|
|
1988
|
+
t.signal.throwIfAborted();
|
|
1989
|
+
let r = createZipCodec(void 0, { rejectDuplicateNames: true, zip64: true }), e = qa(t), c;
|
|
1990
|
+
if (!(n instanceof Uint8Array)) {
|
|
1991
|
+
let a = n.read.bind(n);
|
|
1992
|
+
c = Hi({ size: n.size, async read(l2, u2, S) {
|
|
1993
|
+
try {
|
|
1994
|
+
return await a(l2, u2, S);
|
|
1995
|
+
} catch (b) {
|
|
1996
|
+
throw new ZipStorageFailure(b);
|
|
1997
|
+
}
|
|
1998
|
+
} }, t.signal, () => t.signal.throwIfAborted(), t.own);
|
|
1999
|
+
}
|
|
2000
|
+
let m, f, d = async () => {
|
|
2001
|
+
};
|
|
2002
|
+
if (c && t.createWorkingStorage) {
|
|
2003
|
+
let a = createStoredZipEntries(t.createWorkingStorage.bind(t), c);
|
|
2004
|
+
d = a.close;
|
|
2005
|
+
let l2 = 0;
|
|
2006
|
+
try {
|
|
2007
|
+
f = (await r.readZipArchive(c, e, t.signal, { storage: a.storage, async onEntry(S) {
|
|
2008
|
+
Ja(S, t) && (await a.set(S), l2++);
|
|
2009
|
+
} })).members;
|
|
2010
|
+
} catch (u2) {
|
|
2011
|
+
throw await d(), u2;
|
|
2012
|
+
}
|
|
2013
|
+
m = { get: a.get, size: l2 };
|
|
2014
|
+
} else {
|
|
2015
|
+
let a = c ? await r.readZipArchive(c, e, t.signal) : await r.readZipArchive(new Uint8Array(n), e, t.signal);
|
|
2016
|
+
f = a.entries.length, m = Wa(a.entries, t);
|
|
2017
|
+
}
|
|
2018
|
+
let i = { get size() {
|
|
2019
|
+
return m.size;
|
|
2020
|
+
}, async get(a) {
|
|
2021
|
+
return m.get(a);
|
|
2022
|
+
}, async has(a) {
|
|
2023
|
+
return await m.get(a) !== void 0;
|
|
2024
|
+
} };
|
|
2025
|
+
try {
|
|
2026
|
+
let g2 = function(E = 1) {
|
|
2027
|
+
t.signal.throwIfAborted(), E > (t.limits.workbookWork ?? 1 / 0) - b && de("work"), b += E;
|
|
2028
|
+
}, s = function(E) {
|
|
2029
|
+
E > (t.limits.workbookTextBytes ?? e.maxTotalBytes) - S && de("retained text"), S += E;
|
|
2030
|
+
};
|
|
2031
|
+
var o = g2, _ = s;
|
|
2032
|
+
let a = await i.has("encrypted-package") ? /* @__PURE__ */ new Set() : void 0;
|
|
2033
|
+
a && t.own(() => {
|
|
2034
|
+
for (let E of a) E.fill(0);
|
|
2035
|
+
});
|
|
2036
|
+
let l2 = 0, u2 = 0, S = 0, b = 0, A = /* @__PURE__ */ new Map(), h = /* @__PURE__ */ new Set();
|
|
2037
|
+
async function* R(E) {
|
|
2038
|
+
let p = A.get(E);
|
|
2039
|
+
if (p) {
|
|
2040
|
+
for (let C = 0; C < p.length; C += e.chunkSize) t.signal.throwIfAborted(), yield p.subarray(C, C + e.chunkSize);
|
|
2041
|
+
return;
|
|
2042
|
+
}
|
|
2043
|
+
let T2 = await i.get(E);
|
|
2044
|
+
T2 || pe(`missing part '${E}'`);
|
|
2045
|
+
let Y = !h.has(E);
|
|
2046
|
+
for await (let C of r.decodeZipEntry(T2, e, t.signal)) try {
|
|
2047
|
+
Y && (C.length > e.maxTotalBytes - l2 && de("decoded bytes"), l2 += C.length, g2(C.length)), yield C;
|
|
2048
|
+
} finally {
|
|
2049
|
+
a && C.fill(0);
|
|
2050
|
+
}
|
|
2051
|
+
h.add(E);
|
|
2052
|
+
}
|
|
2053
|
+
async function N(E) {
|
|
2054
|
+
let p = A.get(E);
|
|
2055
|
+
if (p) return p;
|
|
2056
|
+
let T2 = [], Y = 0;
|
|
2057
|
+
for await (let M of R(E)) {
|
|
2058
|
+
let x = new Uint8Array(M);
|
|
2059
|
+
a?.add(x), Y += x.length, T2.push(x);
|
|
2060
|
+
}
|
|
2061
|
+
let C = new Uint8Array(Y), I3 = 0;
|
|
2062
|
+
a?.add(C);
|
|
2063
|
+
for (let M of T2) C.set(M, I3), I3 += M.length;
|
|
2064
|
+
return A.set(E, C), C;
|
|
2065
|
+
}
|
|
2066
|
+
async function y(E, p) {
|
|
2067
|
+
let T2 = { expectedEncoding: "UTF-8", ...p ? { streamElements: p } : {}, retainContent: true, maxDepth: t.limits.xmlDepth ?? 1 / 0, maxNodes: (t.limits.workbookNodes ?? 1 / 0) - u2, maxAttributes: t.limits.workbookNodes ?? 1 / 0, maxTextLength: e.maxTextBytes, onElement() {
|
|
2068
|
+
u2++, g2();
|
|
2069
|
+
} };
|
|
2070
|
+
async function* Y() {
|
|
2071
|
+
let I3 = new Uint8Array(2), M = 0, x;
|
|
2072
|
+
for await (let W of R(E)) {
|
|
2073
|
+
W.length > (t.limits.workbookTextBytes ?? e.maxTotalBytes) - S && de("XML text"), S += W.length;
|
|
2074
|
+
let v = 0;
|
|
2075
|
+
if (!x) {
|
|
2076
|
+
for (; M < 2 && v < W.length; ) I3[M++] = W[v++];
|
|
2077
|
+
if (M < 2) continue;
|
|
2078
|
+
(I3[0] === 255 && I3[1] === 254 || I3[0] === 60 && I3[1] === 0) && (T2.expectedEncoding = "UTF-16LE"), (I3[0] === 254 && I3[1] === 255 || I3[0] === 0 && I3[1] === 60) && (T2.expectedEncoding = "UTF-16BE"), x = new TextDecoder(T2.expectedEncoding, { fatal: true }), yield x.decode(I3, { stream: true });
|
|
2079
|
+
}
|
|
2080
|
+
yield x.decode(W.subarray(v), { stream: true });
|
|
2081
|
+
}
|
|
2082
|
+
yield x ? x.decode() : new TextDecoder("UTF-8", { fatal: true }).decode(I3.subarray(0, M));
|
|
2083
|
+
}
|
|
2084
|
+
let C = 0;
|
|
2085
|
+
return Xi(Y(), T2, async (I3) => {
|
|
2086
|
+
g2(I3), I3 && ++C % 64 === 0 && await new Promise((M) => setTimeout(M, 0));
|
|
2087
|
+
});
|
|
2088
|
+
}
|
|
2089
|
+
async function F(E, p) {
|
|
2090
|
+
let T2 = new Uint8Array(p), Y = 0;
|
|
2091
|
+
for await (let C of R(E)) {
|
|
2092
|
+
let I3 = Math.min(C.length, p - Y);
|
|
2093
|
+
T2.set(C.subarray(0, I3), Y), Y += I3;
|
|
2094
|
+
}
|
|
2095
|
+
return T2.subarray(0, Y);
|
|
2096
|
+
}
|
|
2097
|
+
async function w(E) {
|
|
2098
|
+
return await i.has("mimetype") ? io.get(new TextDecoder().decode(await F("mimetype", 2048))) : await i.has("content.xml") && new TextDecoder().decode(await F("content.xml", 512)).includes(an[0]) ? false : E;
|
|
2099
|
+
}
|
|
2100
|
+
async function O(E) {
|
|
2101
|
+
let p = await i.has("encrypted-package"), T2 = p && await i.has("mimetype") ? await N("mimetype") : void 0;
|
|
2102
|
+
if (p) {
|
|
2103
|
+
let C = z(E.children[0], "media-type", [Qe + "manifest:1.0"]);
|
|
2104
|
+
(!T2 || C !== new TextDecoder().decode(T2) || !["application/vnd.oasis.opendocument.spreadsheet", "application/vnd.oasis.opendocument.spreadsheet-template"].includes(C)) && pe("inconsistent encrypted package media type");
|
|
2105
|
+
}
|
|
2106
|
+
let Y = await pa(E, i, N, t, g2, e.maxTotalBytes - l2, e.maxEntryBytes);
|
|
2107
|
+
if (p) {
|
|
2108
|
+
let C = Y.get("encrypted-package");
|
|
2109
|
+
(!C || Y.size !== 1) && pe("missing encrypted package declaration"), l2 += C.length;
|
|
2110
|
+
let I3 = new Uint8Array(C);
|
|
2111
|
+
a.add(I3);
|
|
2112
|
+
let M = e.maxMembers - f;
|
|
2113
|
+
M < 1 && de("ZIP members");
|
|
2114
|
+
let x = await r.readZipArchive(I3, { ...e, maxMembers: M, maxTotalBytes: e.maxTotalBytes - l2 }, t.signal);
|
|
2115
|
+
for (let ne of x.entries) for (let K of [ne.data, ne.rawName, ne.localName, ne.comment, ne.localExtra, ne.centralExtra]) K && a.add(K);
|
|
2116
|
+
a.add(x.comment);
|
|
2117
|
+
let W = Wa(x.entries, t);
|
|
2118
|
+
W.has("encrypted-package") && pe("nested encrypted package"), m = W, A.clear(), h.clear(), await i.has("mimetype") || pe("missing inner package media type");
|
|
2119
|
+
let v = await N("mimetype");
|
|
2120
|
+
(v.length !== T2.length || !v.every((ne, K) => ne === T2[K])) && pe("inconsistent encrypted package media type");
|
|
2121
|
+
return;
|
|
2122
|
+
}
|
|
2123
|
+
for (let [C, I3] of Y) l2 += I3.length, A.set(C, I3);
|
|
2124
|
+
}
|
|
2125
|
+
return { entries: i, read: N, document: y, version: w, charge: g2, retainText: s, decrypt: O, close: d };
|
|
2126
|
+
} catch (a) {
|
|
2127
|
+
throw await d(), a;
|
|
2128
|
+
}
|
|
2129
|
+
}
|
|
2130
|
+
function Za(n, t) {
|
|
2131
|
+
if (t.signal.throwIfAborted(), n instanceof ZipStorageFailure) throw n.cause;
|
|
2132
|
+
if (n instanceof SyntaxError && n.message === "Invalid XML: DTD and entity declarations are forbidden") throw new he("capability-denied", "ssconvert host denies XML DTD and entity declarations");
|
|
2133
|
+
if (n instanceof he) throw n;
|
|
2134
|
+
(n instanceof vi || n instanceof CodecError && n.code === "resource-limit") && de("package"), pe(n instanceof Error ? n.message : "invalid package");
|
|
2135
|
+
}
|
|
2136
|
+
async function Ls(n, t) {
|
|
2137
|
+
try {
|
|
2138
|
+
let r = t.inputFilename?.toLowerCase(), e = r?.endsWith(".sxc") || r?.endsWith(".stc"), c = await Qa(n, t);
|
|
2139
|
+
try {
|
|
2140
|
+
return await c.version(e ? true : void 0) !== void 0;
|
|
2141
|
+
} finally {
|
|
2142
|
+
await c.close();
|
|
2143
|
+
}
|
|
2144
|
+
} catch (r) {
|
|
2145
|
+
return t.signal.throwIfAborted(), r instanceof CodecError && r.code === "invalid-package" || r instanceof he && r.code === "io" ? false : Za(r, t);
|
|
2146
|
+
}
|
|
2147
|
+
}
|
|
2148
|
+
async function na(n, t, r, e, c) {
|
|
2149
|
+
let m = oo[t];
|
|
2150
|
+
async function f(i, o, _) {
|
|
2151
|
+
e();
|
|
2152
|
+
let a = m.get(o + ":" + i.localName)?.find((S) => ot[S[2]].includes(i.namespace));
|
|
2153
|
+
if (!a) {
|
|
2154
|
+
Object.values(ot).some((S) => S.includes(i.namespace)) && await Un(`Unexpected element '${i.name}' in state :
|
|
2155
|
+
${_.join(" -> ")}
|
|
2156
|
+
`, r, "odf-unknown-element");
|
|
2157
|
+
return;
|
|
2158
|
+
}
|
|
2159
|
+
if (c?.has(i)) {
|
|
2160
|
+
let S = { ...i, children: [], content: [], text: "" };
|
|
2161
|
+
for await (let b of c.content(i)) {
|
|
2162
|
+
let g2 = b.kind === "element" ? await f(b, a[1], [..._, i.localName]) : b;
|
|
2163
|
+
g2 && await c.append(S, [g2]);
|
|
2164
|
+
}
|
|
2165
|
+
return S;
|
|
2166
|
+
}
|
|
2167
|
+
let l2 = [], u2 = /* @__PURE__ */ new Map();
|
|
2168
|
+
for (let S of i.children) {
|
|
2169
|
+
let b = await f(S, a[1], [..._, i.localName]);
|
|
2170
|
+
b && (l2.push(b), u2.set(S, b));
|
|
2171
|
+
}
|
|
2172
|
+
return { ...i, children: l2, content: i.content.flatMap((S) => S.kind !== "element" ? [S] : u2.has(S) ? [u2.get(S)] : []) };
|
|
2173
|
+
}
|
|
2174
|
+
let d = await f(n, "START", []);
|
|
2175
|
+
return d || pe(`unrecognized ${t} root`), d;
|
|
2176
|
+
}
|
|
2177
|
+
function oa(n, t) {
|
|
2178
|
+
let r = Ft(n, "p", on);
|
|
2179
|
+
if (!r.length) return;
|
|
2180
|
+
function e(c) {
|
|
2181
|
+
let m = "";
|
|
2182
|
+
for (let f of c.content) if (t(), f.kind === "text" || f.kind === "cdata") m += f.text;
|
|
2183
|
+
else if (f.kind === "element" && on.includes(f.namespace)) if (f.localName === "s") {
|
|
2184
|
+
let d = Tt(z(f, "c", on));
|
|
2185
|
+
t(d), m += " ".repeat(d);
|
|
2186
|
+
} else f.localName === "tab" || f.localName === "tab-stop" ? m += " " : f.localName === "line-break" ? m += `
|
|
2187
|
+
` : ["span", "a"].includes(f.localName) && (m += e(f));
|
|
2188
|
+
return m;
|
|
2189
|
+
}
|
|
2190
|
+
return r.map(e).join(`
|
|
2191
|
+
`);
|
|
2192
|
+
}
|
|
2193
|
+
function ro(n, t) {
|
|
2194
|
+
t(n.length);
|
|
2195
|
+
let r = n[0] === "-", e = r ? 1 : 0;
|
|
2196
|
+
if (n[e++] !== "P") return;
|
|
2197
|
+
let c = false, m = -1, f = 0, d = 0;
|
|
2198
|
+
for (; e < n.length; ) {
|
|
2199
|
+
if (n[e] === "T") {
|
|
2200
|
+
if (c || ++e === n.length) return;
|
|
2201
|
+
c = true;
|
|
2202
|
+
continue;
|
|
2203
|
+
}
|
|
2204
|
+
let i = e;
|
|
2205
|
+
for (; n[e] !== void 0 && n[e] >= "0" && n[e] <= "9"; ) e++;
|
|
2206
|
+
if (i === e) return;
|
|
2207
|
+
let o = n[e] === ".";
|
|
2208
|
+
if (o) {
|
|
2209
|
+
let u2 = ++e;
|
|
2210
|
+
for (; n[e] !== void 0 && n[e] >= "0" && n[e] <= "9"; ) e++;
|
|
2211
|
+
if (e === u2) return;
|
|
2212
|
+
}
|
|
2213
|
+
let _ = Number(n.slice(i, e)), a = n[e++], l2 = "DHMS".indexOf(a ?? "?");
|
|
2214
|
+
if (l2 <= m || l2 < 0 || (c ? a === "D" : a !== "D") || o && a !== "S" || (m = l2, f++, d += _ * [86400, 3600, 60, 1][l2], !Number.isFinite(d))) return;
|
|
2215
|
+
}
|
|
2216
|
+
if (f) return d === 0 ? 0 : (r ? -d : d) / 86400;
|
|
2217
|
+
}
|
|
2218
|
+
function so(n, t, r, e) {
|
|
2219
|
+
let c = t ? _t : an;
|
|
2220
|
+
for (let f of n.attributes) if (c.includes(f.namespace)) {
|
|
2221
|
+
if (f.localName === "value") {
|
|
2222
|
+
let d = Number(f.value);
|
|
2223
|
+
if (Number.isFinite(d)) return { kind: "number", value: d };
|
|
2224
|
+
}
|
|
2225
|
+
if (f.localName === "boolean-value") return { kind: "boolean", value: f.value.toLowerCase() !== "false" && f.value !== "0" };
|
|
2226
|
+
if (f.localName === "string-value") return { kind: "string", value: f.value };
|
|
2227
|
+
if (f.localName === "date-value") {
|
|
2228
|
+
let d = f.value.split("T"), i = d[0].split("-").map(Number);
|
|
2229
|
+
if (i.length !== 3 || i.some((a) => !Number.isInteger(a))) continue;
|
|
2230
|
+
let o = Ki(i[0], i[1], i[2]);
|
|
2231
|
+
if (o.getUTCFullYear() !== i[0] || o.getUTCMonth() + 1 !== i[1] || o.getUTCDate() !== i[2]) continue;
|
|
2232
|
+
let _ = 0;
|
|
2233
|
+
if (d[1]) {
|
|
2234
|
+
let a = d[1].split(":"), l2 = parseFloat(a[2] ?? ""), u2 = Number(a[0]), S = Number(a[1]);
|
|
2235
|
+
a.length >= 3 && Number.isInteger(u2) && Number.isInteger(S) && Number.isFinite(l2) && (_ = (u2 + S / 60 + l2 / 3600) / 24);
|
|
2236
|
+
}
|
|
2237
|
+
return { kind: "number", value: ji(o, { book: { sheets: [], dateSystem: r } }) + _ };
|
|
2238
|
+
}
|
|
2239
|
+
if (f.localName === "time-value") {
|
|
2240
|
+
let d = ro(f.value, e);
|
|
2241
|
+
if (d !== void 0) return { kind: "number", value: d };
|
|
2242
|
+
}
|
|
2243
|
+
}
|
|
2244
|
+
let m = oa(n, e);
|
|
2245
|
+
return m !== void 0 && (t || z(n, "value-type", an) !== void 0) ? { kind: "string", value: m } : void 0;
|
|
2246
|
+
}
|
|
2247
|
+
async function Va(n, t, r, e, c, m) {
|
|
2248
|
+
let f = t ? ia : jt;
|
|
2249
|
+
if (!t && n.startsWith("oooc:") ? (f = ia, n = n.slice(5)) : !t && n.startsWith("of:") ? n = n.slice(3) : !t && n.startsWith("msoxl:") && (f = { ...aa, leftAssociativePower: true }, n = n.slice(6)), n === "=") return;
|
|
2250
|
+
let d = nn(n, { maximumDepth: e.limits.formulaDepth, grammar: f, position: r, workbook: c, onWork: m, signal: e.signal, maximumLength: e.limits.workbookTextBytes ?? e.limits.inputBytes, maximumNodes: e.limits.workbookNodes ?? 1 / 0 });
|
|
2251
|
+
if (!d.ok) {
|
|
2252
|
+
await Un(`${r.sheet}!${Fn(r.row, r.column)} : Unable to parse '${n}'
|
|
2253
|
+
`, e);
|
|
2254
|
+
return;
|
|
2255
|
+
}
|
|
2256
|
+
let i = false;
|
|
2257
|
+
return Vi(d.document.root, (o) => {
|
|
2258
|
+
o.kind === "reference" && (o.first.sheet && o.first.sheetRelative || o.last?.sheet && o.last.sheetRelative) && (i = true);
|
|
2259
|
+
}), Ka(d.document, i ? zi : { ...aa, quoteSheetName: $i }, false, true);
|
|
2260
|
+
}
|
|
2261
|
+
function hs(n, t) {
|
|
2262
|
+
return t.createWorkingStorage ? lo(n, t, true) : Promise.resolve(void 0);
|
|
2263
|
+
}
|
|
2264
|
+
async function lo(n, t, r = false) {
|
|
2265
|
+
let e, c, m, f;
|
|
2266
|
+
try {
|
|
2267
|
+
f = await (async () => {
|
|
2268
|
+
let i = await Qa(n, t);
|
|
2269
|
+
e = i.close;
|
|
2270
|
+
let o = await i.version(true);
|
|
2271
|
+
o === void 0 && pe("Unknown mimetype for openoffice file.");
|
|
2272
|
+
let _ = o, a = await i.entries.has("encrypted-package");
|
|
2273
|
+
!a && !await i.entries.has("content.xml") && pe("No stream named content.xml found.");
|
|
2274
|
+
let l2 = await i.entries.has("META-INF/manifest.xml") ? await i.document("META-INF/manifest.xml") : void 0;
|
|
2275
|
+
a && !l2 && pe("missing encrypted package manifest"), l2 && ((l2.localName !== "manifest" || ![Qe + "manifest:1.0", "http://openoffice.org/2001/manifest"].includes(l2.namespace)) && pe("invalid manifest"), (a || l2.children.some((J) => J.children.some((V) => V.localName === "encryption-data"))) && await i.decrypt(l2)), a && (await i.entries.has("content.xml") || pe("No stream named content.xml found."), l2 = await i.entries.has("META-INF/manifest.xml") ? await i.document("META-INF/manifest.xml") : void 0, l2 && (l2.localName !== "manifest" || l2.namespace !== Qe + "manifest:1.0" || l2.children.some((J) => J.children.some((V) => V.localName === "encryption-data"))) && pe("invalid inner package manifest")), t.createWorkingStorage && (c = ua(t, _t));
|
|
2276
|
+
let u2 = await i.document("content.xml", c?.streamElements), S = (J) => c ? c.children(J) : J.children;
|
|
2277
|
+
async function b(J) {
|
|
2278
|
+
if (i.charge(), J.attributes.some((V) => V.localName === "formula") || ["named-expression", "named-range"].includes(J.localName)) return true;
|
|
2279
|
+
for await (let V of S(J)) if (await b(V)) return true;
|
|
2280
|
+
return false;
|
|
2281
|
+
}
|
|
2282
|
+
r && await b(u2) && (r = false);
|
|
2283
|
+
let g2 = r ? ma(t) : void 0, A = await na(u2, _ ? "ooo1_content_dtd" : "opendoc_content_dtd", t, i.charge, c), h = [A];
|
|
2284
|
+
await i.entries.has("styles.xml") && h.unshift(await na(await i.document("styles.xml"), "styles_dtd", t, i.charge));
|
|
2285
|
+
let R = await na(u2, _ ? "ooo1_content_dtd" : "opendoc_content_dtd", t, i.charge, c), N = Ft(R, "body", an)[0], y = _ ? N : Ft(N, "spreadsheet", an)[0];
|
|
2286
|
+
y || pe("missing spreadsheet body");
|
|
2287
|
+
let F = Ft(y, "calculation-settings")[0], w = z(Ft(F, "null-date")[0], "date-value")?.startsWith("1904") ? "1904" : "1900", s = [], O = co(h, i.charge), E = Mn(h, i.charge);
|
|
2288
|
+
for (let J of h) for (let V of J.children) ["styles", "automatic-styles", "master-styles", "font-face-decls", "font-decls"].includes(V.localName) && s.push(tn(V, { packagePart: J === A ? "content.xml" : "styles.xml" }));
|
|
2289
|
+
l2 && s.push(tn(l2));
|
|
2290
|
+
for (let J of ["meta.xml", "settings.xml"]) await i.entries.has(J) && s.push(tn(await i.document(J)));
|
|
2291
|
+
let p = /* @__PURE__ */ new Set();
|
|
2292
|
+
async function T2(J, V = "") {
|
|
2293
|
+
for await (let se of S(J)) {
|
|
2294
|
+
if (i.charge(), ot.OO_NS_DRAW.includes(se.namespace) && ["image", "object", "object-ole"].includes(se.localName)) {
|
|
2295
|
+
let Re = z(se, "href", ["http://www.w3.org/1999/xlink"]);
|
|
2296
|
+
if (Re && !Re.includes(":") && !Re.startsWith("/") && !Re.startsWith("#")) {
|
|
2297
|
+
let ge;
|
|
2298
|
+
try {
|
|
2299
|
+
ge = decodeURIComponent(Re);
|
|
2300
|
+
} catch {
|
|
2301
|
+
pe("invalid embedded resource URI");
|
|
2302
|
+
}
|
|
2303
|
+
(ge.includes("\\") || ge.includes(":")) && pe("invalid embedded resource path");
|
|
2304
|
+
let be = V.split("/").filter(Boolean);
|
|
2305
|
+
for (let Ee of ge.split("/")) Ee === ".." ? (be.length || pe("embedded resource escapes package"), be.pop()) : Ee && Ee !== "." && be.push(Ee);
|
|
2306
|
+
let le = be.join("/"), Le = se.localName === "object" ? [le + "/content.xml", le + "/styles.xml"] : [le];
|
|
2307
|
+
for (let Ee of Le) if (!p.has(Ee) && await i.entries.has(Ee)) if (p.add(Ee), Ee.endsWith(".xml") && se.localName === "object") {
|
|
2308
|
+
let we = await i.document(Ee);
|
|
2309
|
+
s.push({ source: "Gnumeric_OpenCalc:openoffice", kind: "embedded-document", disposition: "retained", data: { path: Ee, xml: pn(we) } }), await T2(we, Ee.slice(0, Ee.lastIndexOf("/")));
|
|
2310
|
+
} else {
|
|
2311
|
+
let we = await i.read(Ee);
|
|
2312
|
+
i.retainText(we.length * 2), i.charge(we.length);
|
|
2313
|
+
let fe = "";
|
|
2314
|
+
for (let Ne of we) fe += Ne.toString(16).padStart(2, "0");
|
|
2315
|
+
s.push({ source: "Gnumeric_OpenCalc:openoffice", kind: "embedded-resource", disposition: "retained", data: { path: Ee, encoding: "hex", bytes: fe } });
|
|
2316
|
+
}
|
|
2317
|
+
}
|
|
2318
|
+
}
|
|
2319
|
+
await T2(se, V);
|
|
2320
|
+
}
|
|
2321
|
+
}
|
|
2322
|
+
await T2(R);
|
|
2323
|
+
let Y = [], C = [], I3 = 0, M = 0, x = [], W = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Set(), ne, K = Ft(y, "table");
|
|
2324
|
+
K.length > t.limits.sheets && de("sheets");
|
|
2325
|
+
let G = K.map((J, V) => (i.charge(), z(J, "name") ?? `Sheet${V + 1}`)), j = /* @__PURE__ */ new Set();
|
|
2326
|
+
for (let [J, V] of K.entries()) {
|
|
2327
|
+
let rt = function(ce, q = {}) {
|
|
2328
|
+
++M > (t.limits.workbookNodes ?? 1 / 0) && de("metadata"), we.push(tn(ce, q));
|
|
2329
|
+
}, ie = function(ce, q, oe) {
|
|
2330
|
+
let ae = q;
|
|
2331
|
+
for (; ae < ce && ae < oe; ) ae *= 2;
|
|
2332
|
+
return Math.min(ae, oe);
|
|
2333
|
+
};
|
|
2334
|
+
var et = rt, lt = ie;
|
|
2335
|
+
i.charge();
|
|
2336
|
+
let se = G[J];
|
|
2337
|
+
j.has(se) && pe("duplicate sheet name"), j.add(se);
|
|
2338
|
+
let Re = se, ge = [], be = [], le = [], Le = [], Ee = [], we = [], fe = g2 ? { ordinal: J, rows: g2.axes.axis(), columns: g2.axes.axis() } : void 0;
|
|
2339
|
+
fe && g2.sheets.set(Re, fe);
|
|
2340
|
+
let Ne = 0, ut = 0, xe = 0, tt = 0, Ot = [], ht = O.resolve(z(V, "style-name"), "table");
|
|
2341
|
+
async function L(ce, q, oe = 0) {
|
|
2342
|
+
for await (let ae of S(ce)) {
|
|
2343
|
+
if (i.charge(), !_t.includes(ae.namespace)) continue;
|
|
2344
|
+
if (ae.localName === `table-${q}-group` || ae.localName === `table-header-${q}s` || ae.localName === `table-${q}s`) {
|
|
2345
|
+
await L(ae, q, oe + (ae.localName.endsWith("-group") ? 1 : 0));
|
|
2346
|
+
continue;
|
|
2347
|
+
}
|
|
2348
|
+
if (ae.localName !== `table-${q}`) continue;
|
|
2349
|
+
let Be = Tt(z(ae, `number-${q}s-repeated`)), $e = q === "row" ? Ne : ut, rn = q === "row" ? me.rows : me.columns;
|
|
2350
|
+
Be > rn - $e && de(`${q} extent`);
|
|
2351
|
+
let yt = O.resolve(z(ae, "style-name"), `table-${q}`), Ut = z(ae, "default-cell-style-name"), Yt = O.axisSize(z(ae, "style-name"), q), Kt = z(ae, "visibility") !== void 0 && z(ae, "visibility") !== "visible";
|
|
2352
|
+
if (Yt !== void 0 || Kt || oe || yt) {
|
|
2353
|
+
Be > (t.limits.workbookNodes ?? 1 / 0) - M && de("axis metadata");
|
|
2354
|
+
for (let re = 0; re < Be; re++) {
|
|
2355
|
+
i.charge(), M++, re > 0 && re % 1024 === 0 && (await new Promise((nt) => setTimeout(nt, 0)), i.charge());
|
|
2356
|
+
let Pe = { index: $e + re, ...Yt === void 0 ? {} : { sizePoints: Yt }, ...Kt ? { hidden: Kt } : {}, ...oe ? { outlineLevel: oe } : {}, ...yt ? { style: yt.style } : {} };
|
|
2357
|
+
fe ? await (q === "row" ? fe.rows : fe.columns).add(Pe) : (q === "row" ? be : le).push(Pe);
|
|
2358
|
+
}
|
|
2359
|
+
}
|
|
2360
|
+
if (q === "column") {
|
|
2361
|
+
Ut && Ot.push({ start: $e, end: $e + Be, name: Ut }), ut += Be;
|
|
2362
|
+
continue;
|
|
2363
|
+
}
|
|
2364
|
+
let Ce = 0;
|
|
2365
|
+
for await (let re of S(ae)) {
|
|
2366
|
+
if (i.charge(), !_t.includes(re.namespace) || !["table-cell", "covered-table-cell"].includes(re.localName)) continue;
|
|
2367
|
+
let Pe = Tt(z(re, "number-columns-repeated"));
|
|
2368
|
+
if (Pe > me.columns - Ce && de("column extent"), re.localName === "covered-table-cell") {
|
|
2369
|
+
Ce += Pe;
|
|
2370
|
+
continue;
|
|
2371
|
+
}
|
|
2372
|
+
let nt = z(re, "formula"), Ue = so(re, _, w, i.charge), Je = nt && !["=", "of:=", "oooc:="].includes(nt) ? nt : void 0, gt = re.attributes.findIndex((P) => P.localName === "error-value" && ot.OO_GNUM_NS_EXT.includes(P.namespace)), Rn = re.attributes.findIndex((P) => P.localName === "formula" && _t.includes(P.namespace));
|
|
2373
|
+
if (Je && gt >= 0 && gt < Rn) {
|
|
2374
|
+
let P = Je.startsWith("msoxl:"), k = nn(P ? Je.slice(6) : Je, { maximumDepth: t.limits.formulaDepth, grammar: P ? aa : _ ? ia : jt, position: { sheet: Re, row: Ne, column: Ce }, signal: t.signal, maximumLength: t.limits.workbookTextBytes ?? t.limits.inputBytes, maximumNodes: t.limits.workbookNodes ?? 1 / 0 });
|
|
2375
|
+
k.ok && k.document.root.kind === "literal" && k.document.root.value.kind === "error" && (Ue = k.document.root.value, Je = void 0);
|
|
2376
|
+
}
|
|
2377
|
+
let sn = nt === "=" || nt === "of:=" || nt === "oooc:=", je = re.attributes.some((P) => (_ ? _t : an).includes(P.namespace) && ["value", "boolean-value", "string-value", "date-value", "time-value"].includes(P.localName));
|
|
2378
|
+
if (sn) {
|
|
2379
|
+
let P = { kind: "error", value: oa(re, i.charge) ?? "#VALUE!" };
|
|
2380
|
+
if (ne) {
|
|
2381
|
+
let k = ne.cells.findIndex((X2) => X2.row === ne.row && X2.column === ne.column);
|
|
2382
|
+
k >= 0 && (ne.cells[k] = { ...ne.cells[k], value: P }), je || (Ue = void 0);
|
|
2383
|
+
} else Ue = P, ne = { cells: ge, row: Ne, column: Ce };
|
|
2384
|
+
} else !Je && !je && Ue?.kind === "string" && (ne = { cells: ge, row: Ne, column: Ce });
|
|
2385
|
+
let ln = z(re, "style-name") ?? Ut ?? Ot.find((P) => Ce >= P.start && Ce < P.end)?.name, xt = O.resolve(ln) ?? O.defaultCell, Ht = z(re, "columns-spanned-fake", ot.OO_GNUM_NS_EXT) === "true" ? 1 : Tt(z(re, "number-columns-spanned")), wt = Tt(z(re, "number-rows-spanned"));
|
|
2386
|
+
(Ht > me.columns - Ce || wt > me.rows - Ne) && de("merge extent"), (Ht > 1 || wt > 1) && (Le.push({ startRow: Ne, startColumn: Ce, endRow: Ne + wt - 1, endColumn: Ce + Ht - 1 }), xe = Math.max(xe, Ne + wt), tt = Math.max(tt, Ce + Ht));
|
|
2387
|
+
let Ct = Tt(z(re, "number-matrix-columns-spanned"), 0), It = Tt(z(re, "number-matrix-rows-spanned"), 0), bn = z(re, "content-validation-name"), D = Ue?.kind === "string" ? E(re) : void 0, H = Ue?.kind === "string" && D?.value === Ue.value ? D.richText : void 0;
|
|
2388
|
+
for (let P of re.children) if (P.namespace !== on[0] && P.namespace !== on[1] || P.localName !== "p") {
|
|
2389
|
+
let k = P.localName === "annotation" && ot.OO_NS_OFFICE.includes(P.namespace) ? Vn(P, E) : void 0;
|
|
2390
|
+
rt(P, { row: Ne, column: Ce, ...k ? { sourceComment: JSON.stringify([k.Author ?? null, k.Text, k.TextFormat ?? null]) } : {} });
|
|
2391
|
+
}
|
|
2392
|
+
let ee = Ft(re, "p", on);
|
|
2393
|
+
if (ee.some((P) => P.children.length || P.attributes.some((k) => k.namespace !== "http://www.w3.org/2000/xmlns/"))) for (let P of ee) rt(P, { row: Ne, column: Ce, rows: Be, columns: Pe, sourceText: D?.value ?? oa(re, i.charge) ?? "", sourceRichText: (H ?? []).map((k) => ({ start: k.start, end: k.end, attributes: k.attributes })) });
|
|
2394
|
+
if (bn && rt(re, { row: Ne, column: Ce, rows: Be, columns: Pe, validation: bn }), Ue || Je) {
|
|
2395
|
+
let P = Be * Pe;
|
|
2396
|
+
(!Number.isSafeInteger(P) || P > t.limits.cells - I3) && de("cells"), I3 += P;
|
|
2397
|
+
for (let k = 0; k < Be; k++) for (let X2 = 0; X2 < Pe; X2++) {
|
|
2398
|
+
i.charge();
|
|
2399
|
+
let Te = k === 0 && X2 === 0;
|
|
2400
|
+
k * Pe + X2 > 0 && (k * Pe + X2) % 1024 === 0 && (await new Promise((Ve) => setTimeout(Ve, 0)), i.charge());
|
|
2401
|
+
let He = z(re, "style-name") ?? Ut ?? Ot.find((Ve) => Ce + X2 >= Ve.start && Ce + X2 < Ve.end)?.name, te = X2 === 0 ? xt : O.resolve(He) ?? O.defaultCell, We = { row: Ne + k, column: Ce + X2, value: Ue ?? { kind: "blank" }, ...Te && Je ? { formula: Je, formulaDirty: true, ...Ue === void 0 ? {} : { cachedResult: Ue } } : {}, ...H?.length ? { richText: H } : {}, ...te?.format ? { format: te.format } : {}, ...te ? { style: te.style } : {} };
|
|
2402
|
+
g2 ? await g2.cells.append(J, We) : ge.push(We);
|
|
2403
|
+
}
|
|
2404
|
+
xe = Math.max(xe, Ne + Be), tt = Math.max(tt, Ce + Pe);
|
|
2405
|
+
} else xt && rt(re, { row: Ne, column: Ce, rows: Be, columns: Pe, styleName: ln ?? "" });
|
|
2406
|
+
if (Je) {
|
|
2407
|
+
let P = { sheet: Re, row: Ne, column: Ce };
|
|
2408
|
+
x.push(async (k) => {
|
|
2409
|
+
i.charge();
|
|
2410
|
+
let X2 = await Va(Je, _, P, t, k, i.charge), Te = W.get(Re), He = Te.get(`${P.row}:${P.column}`);
|
|
2411
|
+
if (X2) {
|
|
2412
|
+
let te;
|
|
2413
|
+
if (Ct || It) {
|
|
2414
|
+
let We = Ct || 1, Ve = It || 1;
|
|
2415
|
+
(!Ct || !It) && await Un(`${Re}!${Fn(P.row, P.column)} : Invalid array expression does not specify number of ${Ct ? "rows" : "columns"}.
|
|
2416
|
+
`, t), (We > me.columns - P.column || Ve > me.rows - P.row) && de("array extent"), te = `array-${P.row}-${P.column}`, Ee.push({ id: te, kind: "array", expression: X2, range: { startRow: P.row, startColumn: P.column, endRow: P.row + Ve - 1, endColumn: P.column + We - 1 } });
|
|
2417
|
+
}
|
|
2418
|
+
ge[He] = { ...ge[He], formula: X2, ...te ? { formulaGroup: te } : {} };
|
|
2419
|
+
} else if (++M > (t.limits.workbookNodes ?? 1 / 0) && de("metadata"), we.push({ source: "Gnumeric_OpenCalc:openoffice", kind: "unparsed-formula", disposition: "retained", data: { row: P.row, column: P.column, formula: nt, rows: Be, columns: Pe } }), Ue !== void 0) {
|
|
2420
|
+
let { formula: te, formulaDirty: We, cachedResult: Ve, ...Ln } = ge[He];
|
|
2421
|
+
ge[He] = Ln;
|
|
2422
|
+
} else {
|
|
2423
|
+
for (let te = 0; te < Be; te++) for (let We = 0; We < Pe; We++) {
|
|
2424
|
+
i.charge();
|
|
2425
|
+
let Ve = Te.get(`${P.row + te}:${P.column + We}`);
|
|
2426
|
+
v.add(ge[Ve]), I3--;
|
|
2427
|
+
}
|
|
2428
|
+
xt && rt(re, { row: P.row, column: P.column, rows: Be, columns: Pe, styleName: ln ?? "" });
|
|
2429
|
+
}
|
|
2430
|
+
});
|
|
2431
|
+
}
|
|
2432
|
+
Ce += Pe;
|
|
2433
|
+
}
|
|
2434
|
+
Ne += Be;
|
|
2435
|
+
}
|
|
2436
|
+
}
|
|
2437
|
+
await L(V, "column"), await L(V, "row");
|
|
2438
|
+
let B = [...await ya(V, i.charge, h, G, E, S), ...ga(y, se, i.charge)];
|
|
2439
|
+
B.length > (t.limits.workbookNodes ?? 1 / 0) - M && de("metadata"), M += B.length, we.push(...B);
|
|
2440
|
+
for await (let ce of S(V)) ["table-column", "table-row", "table-column-group", "table-row-group", "table-header-rows", "table-header-columns", "table-columns", "table-rows", "named-expressions"].includes(ce.localName) || rt(ce);
|
|
2441
|
+
z(V, "print-ranges") && rt(c ? await c.materialize(V) : V, { printRanges: z(V, "print-ranges") });
|
|
2442
|
+
let U = Rt(ht?.style.odf).find((ce) => qe(ce)?.name === "table-properties" && qe(ce)?.namespace === Lt.style), Z = $t(U, Lt.gnm), _e = { RTL_Layout: $t(U, Lt.style)["writing-mode"] === "rl-tb" ? "1" : "0" };
|
|
2443
|
+
for (let [ce, q, oe] of [["display-formulas", "DisplayFormulas", false], ["display-col-header", "HideColHeader", true], ["display-row-header", "HideRowHeader", true]]) Z[ce] !== void 0 && (_e[q] = Z[ce] === "true" !== oe ? "1" : "0");
|
|
2444
|
+
Y.push({ id: Re, name: se, cells: ge.sort((ce, q) => ce.row - q.row || ce.column - q.column), size: { rows: ie(Math.max(xe, (fe?.rows.maximum ?? be.at(-1)?.index ?? -1) + 1), Pn.rows, me.rows), columns: ie(Math.max(tt, (fe?.columns.maximum ?? le.at(-1)?.index ?? -1) + 1), Pn.columns, me.columns) }, ...ht?.display === "false" ? { visibility: "hidden" } : {}, rows: be, columns: le, merges: Le, formulaGroups: Ee, unsupportedRecords: we }), ht && (Y[Y.length - 1] = { ...Y[Y.length - 1], view: { odf: ht.style.odf ?? null, gnumeric: _e } });
|
|
2445
|
+
}
|
|
2446
|
+
async function ue(J, V) {
|
|
2447
|
+
for await (let se of S(J)) if (se.localName === "named-expressions" && _t.includes(se.namespace)) for (let Re of se.children) {
|
|
2448
|
+
i.charge();
|
|
2449
|
+
let ge = z(Re, "name");
|
|
2450
|
+
if (!ge) continue;
|
|
2451
|
+
let be = z(Re, "expression") ?? (z(Re, "cell-range-address") ? "=[" + z(Re, "cell-range-address") + "]" : void 0);
|
|
2452
|
+
if (!be) continue;
|
|
2453
|
+
let le = V ?? Y[0]?.id ?? (K[0] ? z(K[0], "name") : void 0) ?? "Sheet1", Le = z(Re, "base-cell-address"), Ee = Le ? nn("=[" + Le + "]", { maximumDepth: t.limits.formulaDepth, grammar: jt, position: { sheet: le, row: 0, column: 0 }, signal: t.signal, maximumLength: t.limits.workbookTextBytes ?? t.limits.inputBytes, maximumNodes: t.limits.workbookNodes ?? 1 / 0 }) : void 0, we = Ee?.ok && Ee.document.root.kind === "reference" && !Ee.document.root.last ? Ee.document.root.first : void 0, fe = we?.sheet;
|
|
2454
|
+
fe !== void 0 && i.charge(fe.length);
|
|
2455
|
+
let Ne = fe === void 0 ? void 0 : Ga(fe), xe = { sheet: Ne === void 0 ? le : Y.find((Ot) => (i.charge(1 + Ot.name.length), Ga(Ot.name) === Ne))?.id ?? fe, row: we?.row?.value ?? 0, column: we?.column?.value ?? 0 }, tt = await Va(be, _, xe, t, Q, i.charge);
|
|
2456
|
+
tt && C.push({ name: ge, expression: tt, ...V ? { sheet: V } : {}, position: xe });
|
|
2457
|
+
}
|
|
2458
|
+
}
|
|
2459
|
+
for (let J of y.children) ["table", "named-expressions", "calculation-settings", "label-ranges"].includes(J.localName) || s.push(tn(J));
|
|
2460
|
+
F && s.push(tn(F)), Y.length || pe("no sheets");
|
|
2461
|
+
let ve = Ft(F, "iteration")[0], ze = Number(z(ve, "steps") ?? "100");
|
|
2462
|
+
(!Number.isSafeInteger(ze) || ze < 0) && pe("invalid iteration count");
|
|
2463
|
+
let ye = z(F, "automatic-find-labels");
|
|
2464
|
+
ye !== void 0 && !["true", "false"].includes(ye) && pe("invalid automatic label lookup setting");
|
|
2465
|
+
let Q = { sheets: Ca(y, Y, t, i.charge), names: C, dateSystem: w, automaticLabelLookup: ye !== "false", calculationMode: "automatic", unsupportedRecords: s, ...ve ? { iteration: { enabled: z(ve, "status") === "enable", maximum: ze, tolerance: Number(z(ve, "maximum-difference") ?? "0.001") } } : {} };
|
|
2466
|
+
if (g2) return g2.workbook(Q);
|
|
2467
|
+
for (let J of Q.sheets) W.set(J.id, new Map(J.cells.map((V, se) => (i.charge(), [`${V.row}:${V.column}`, se]))));
|
|
2468
|
+
for (let [J, V] of x.entries()) J % 128 === 0 && (await new Promise((se) => setTimeout(se, 0)), i.charge()), await V(Q);
|
|
2469
|
+
for (let [J, V] of K.entries()) await ue(V, Y[J].id);
|
|
2470
|
+
await ue(y);
|
|
2471
|
+
let Ye = [];
|
|
2472
|
+
for (let J of Q.sheets) {
|
|
2473
|
+
let V = [], se = J.formulaGroups ?? [];
|
|
2474
|
+
for (let [be, le] of J.cells.entries()) be > 0 && be % 1024 === 0 && await new Promise((Le) => setTimeout(Le, 0)), i.charge(), v.has(le) || V.push(le);
|
|
2475
|
+
if (se.length) {
|
|
2476
|
+
let be = new Map(V.map((le, Le) => [`${le.row}:${le.column}`, Le]));
|
|
2477
|
+
for (let le of se) {
|
|
2478
|
+
let Le = (le.range.endRow - le.range.startRow + 1) * (le.range.endColumn - le.range.startColumn + 1);
|
|
2479
|
+
i.charge(Le);
|
|
2480
|
+
let Ee = 0;
|
|
2481
|
+
for (let we = le.range.startRow; we <= le.range.endRow; we++) for (let fe = le.range.startColumn; fe <= le.range.endColumn; fe++) {
|
|
2482
|
+
++Ee % 1024 === 0 && (await new Promise((xe) => setTimeout(xe, 0)), i.charge());
|
|
2483
|
+
let Ne = `${we}:${fe}`, ut = be.get(Ne);
|
|
2484
|
+
if (ut === void 0) I3 >= t.limits.cells && de("cells"), I3++, be.set(Ne, V.length), V.push({ row: we, column: fe, value: { kind: "blank" }, formulaGroup: le.id });
|
|
2485
|
+
else {
|
|
2486
|
+
let xe = V[ut];
|
|
2487
|
+
V[ut] = { ...xe, formulaGroup: le.id, ...xe.value.kind === "blank" ? {} : { cachedResult: xe.value } };
|
|
2488
|
+
}
|
|
2489
|
+
}
|
|
2490
|
+
}
|
|
2491
|
+
}
|
|
2492
|
+
let Re = J.size.rows, ge = J.size.columns;
|
|
2493
|
+
for (let be of se) {
|
|
2494
|
+
for (; Re <= be.range.endRow; ) Re = Math.min(Re * 2, me.rows);
|
|
2495
|
+
for (; ge <= be.range.endColumn; ) ge = Math.min(ge * 2, me.columns);
|
|
2496
|
+
}
|
|
2497
|
+
Ye.push({ ...J, cells: V.sort((be, le) => be.row - le.row || be.column - le.column), size: { rows: Re, columns: ge } });
|
|
2498
|
+
}
|
|
2499
|
+
return { ...Q, sheets: Ye };
|
|
2500
|
+
})();
|
|
2501
|
+
} catch (i) {
|
|
2502
|
+
try {
|
|
2503
|
+
Za(i, t);
|
|
2504
|
+
} catch (o) {
|
|
2505
|
+
m = { error: o };
|
|
2506
|
+
}
|
|
2507
|
+
}
|
|
2508
|
+
let d = [];
|
|
2509
|
+
try {
|
|
2510
|
+
await c?.close();
|
|
2511
|
+
} catch (i) {
|
|
2512
|
+
d.push(i);
|
|
2513
|
+
}
|
|
2514
|
+
try {
|
|
2515
|
+
await e?.();
|
|
2516
|
+
} catch (i) {
|
|
2517
|
+
d.push(i);
|
|
2518
|
+
}
|
|
2519
|
+
if (d.length) throw m ? new AggregateError([m.error, ...d], "ODF read and cleanup failed") : d.length === 1 ? d[0] : new AggregateError(d, "ODF cleanup failed");
|
|
2520
|
+
if (m) throw m.error;
|
|
2521
|
+
return f;
|
|
2522
|
+
}
|
|
2523
|
+
function co(n, t) {
|
|
2524
|
+
let r = /* @__PURE__ */ new Map(), e = /* @__PURE__ */ new Map(), c;
|
|
2525
|
+
for (let i of n) for (let o of i.children) if (["styles", "automatic-styles"].includes(o.localName)) for (let _ of o.children) {
|
|
2526
|
+
t();
|
|
2527
|
+
let a = z(_, "name", st), l2 = z(_, "family", st);
|
|
2528
|
+
st.includes(_.namespace) && _.localName === "style" && a && l2 && r.set(l2 + ":" + a, _), st.includes(_.namespace) && _.localName === "default-style" && z(_, "family", st) === "table-cell" && (c = _), bt.includes(_.namespace) && a && e.set(a, fo(_, t));
|
|
2529
|
+
}
|
|
2530
|
+
let m = /* @__PURE__ */ new Map();
|
|
2531
|
+
function f(i, o = "table-cell", _ = /* @__PURE__ */ new Set()) {
|
|
2532
|
+
if (!i) return;
|
|
2533
|
+
let a = o + ":" + i, l2 = m.get(a);
|
|
2534
|
+
if (l2) return l2;
|
|
2535
|
+
let u2 = r.get(a);
|
|
2536
|
+
if (!u2) return;
|
|
2537
|
+
t(), _.has(a) && pe("cyclic style inheritance");
|
|
2538
|
+
let S = new Set(_);
|
|
2539
|
+
S.add(a);
|
|
2540
|
+
let b = f(z(u2, "parent-style-name", st), o, S), g2 = e.get(z(u2, "data-style-name", st) ?? "") ?? b?.format, A = u2.children.map((R) => z(R, "display", _t)).find((R) => R !== void 0) ?? b?.display, h = { ...g2 ? { format: g2 } : {}, style: { ...b?.style, odf: pn(u2), gnumeric: zn(u2, b?.style.gnumeric, t) }, ...A ? { display: A } : {} };
|
|
2541
|
+
return m.set(a, h), h;
|
|
2542
|
+
}
|
|
2543
|
+
function d(i, o) {
|
|
2544
|
+
let _ = `table-${o}`, a = i ? r.get(_ + ":" + i) : void 0, l2 = /* @__PURE__ */ new Set();
|
|
2545
|
+
for (; a; ) {
|
|
2546
|
+
t(), l2.has(a) && pe("cyclic axis style inheritance"), l2.add(a);
|
|
2547
|
+
let u2 = a.children.find((g2) => st.includes(g2.namespace) && ["properties", `table-${o}-properties`].includes(g2.localName)), S = z(u2, o === "row" ? "row-height" : "column-width", st);
|
|
2548
|
+
if (S) {
|
|
2549
|
+
let g2 = { cm: 28.346456692913385, mm: 2.834645669291339, in: 72, pt: 1, pc: 12 }, A = S.slice(-2), h = Number(S.slice(0, -2)), R = g2[A];
|
|
2550
|
+
if (R && Number.isFinite(h) && h >= 0) return h * R;
|
|
2551
|
+
}
|
|
2552
|
+
let b = z(a, "parent-style-name", st);
|
|
2553
|
+
a = b ? r.get(_ + ":" + b) : void 0;
|
|
2554
|
+
}
|
|
2555
|
+
}
|
|
2556
|
+
return { resolve: f, axisSize: d, defaultCell: c ? { style: { odf: pn(c), gnumeric: zn(c, void 0, t) }, format: e.get(z(c, "data-style-name", st) ?? "") } : void 0 };
|
|
2557
|
+
}
|
|
2558
|
+
function fo(n, t) {
|
|
2559
|
+
let r = "";
|
|
2560
|
+
for (let e of n.children) {
|
|
2561
|
+
if (t(), !bt.includes(e.namespace)) continue;
|
|
2562
|
+
let c = z(e, "style", bt) === "long";
|
|
2563
|
+
if (e.localName === "text" || e.localName === "currency-symbol") r += '"' + e.text.split('"').join('""') + '"';
|
|
2564
|
+
else if (e.localName === "number" || e.localName === "scientific-number") {
|
|
2565
|
+
let m = Tt(z(e, "decimal-places", bt), 0), f = Tt(z(e, "min-integer-digits", bt), 1);
|
|
2566
|
+
if (t(m + f), r += (z(e, "grouping", bt) === "true" ? "#,##" : "") + "0".repeat(f) + (m ? "." + "0".repeat(m) : ""), e.localName === "scientific-number") {
|
|
2567
|
+
let d = Tt(z(e, "min-exponent-digits", bt), 2);
|
|
2568
|
+
t(d), r += "E+" + "0".repeat(d);
|
|
2569
|
+
}
|
|
2570
|
+
} else e.localName === "day" ? r += c ? "dd" : "d" : e.localName === "month" ? r += z(e, "textual", bt) === "true" ? c ? "mmmm" : "mmm" : c ? "mm" : "m" : e.localName === "year" ? r += c ? "yyyy" : "yy" : e.localName === "day-of-week" ? r += c ? "dddd" : "ddd" : e.localName === "hours" ? r += z(n, "truncate-on-overflow", bt) === "false" ? "[h]" : c ? "hh" : "h" : e.localName === "minutes" ? r += c ? "mm" : "m" : e.localName === "seconds" ? r += c ? "ss" : "s" : e.localName === "am-pm" ? r += "AM/PM" : e.localName === "text-content" && (r += "@");
|
|
2571
|
+
}
|
|
2572
|
+
return r || "General";
|
|
2573
|
+
}
|
|
2574
|
+
function za(n) {
|
|
2575
|
+
let t = String(n), r = t.indexOf("e");
|
|
2576
|
+
if (r < 0) return t;
|
|
2577
|
+
let e = t.slice(0, r), c = e.indexOf("."), m = e.replace(".", ""), f = (c < 0 ? e.length : c) + Number(t.slice(r + 1));
|
|
2578
|
+
return f <= 0 ? "0." + "0".repeat(-f) + m : f >= m.length ? m + "0".repeat(f - m.length) : m.slice(0, f) + "." + m.slice(f);
|
|
2579
|
+
}
|
|
2580
|
+
async function Bn(n) {
|
|
2581
|
+
let t = [], r = 0;
|
|
2582
|
+
try {
|
|
2583
|
+
for await (let m of n) t.push(m.slice()), r += m.length;
|
|
2584
|
+
let e = new Uint8Array(r), c = 0;
|
|
2585
|
+
for (let m of t) e.set(m, c), c += m.length;
|
|
2586
|
+
return e;
|
|
2587
|
+
} finally {
|
|
2588
|
+
for (let e of t) e.fill(0);
|
|
2589
|
+
}
|
|
2590
|
+
}
|
|
2591
|
+
function ys(n) {
|
|
2592
|
+
let t = Eo(n);
|
|
2593
|
+
return (r, e, c) => Bn(t(r, e, c));
|
|
2594
|
+
}
|
|
2595
|
+
function Eo(n) {
|
|
2596
|
+
return async function* (t, r, e) {
|
|
2597
|
+
let c, m, f = [], d, i = false, o, _, a = [], l2 = new Uint8Array(16384), u2 = () => (i = true, o ??= Promise.resolve().then(async () => {
|
|
2598
|
+
await m?.close(), await c?.close();
|
|
2599
|
+
}));
|
|
2600
|
+
e.own(u2);
|
|
2601
|
+
try {
|
|
2602
|
+
let M = function(L) {
|
|
2603
|
+
L > e.limits.outputBytes - I3 && de("output bytes"), I3 += L;
|
|
2604
|
+
}, K = function(L, B) {
|
|
2605
|
+
if (s.charge(), !Number.isSafeInteger(L) || L < 0 || L >= B) throw new he("invalid-request", "Invalid OpenDocument cell coordinate");
|
|
2606
|
+
}, G = function(L) {
|
|
2607
|
+
if (K(L.startRow, me.rows), K(L.endRow, me.rows), K(L.startColumn, me.columns), K(L.endColumn, me.columns), L.startRow > L.endRow || L.startColumn > L.endColumn) throw new he("invalid-request", "Invalid OpenDocument range");
|
|
2608
|
+
}, j = function(L, B, U, Z) {
|
|
2609
|
+
s.charge(L.length);
|
|
2610
|
+
let _e = p.documents.get(JSON.stringify([B.id, U, Z, L])), ie = _e ? { ok: true, document: _e } : nn(L, { maximumDepth: e.limits.formulaDepth, position: { sheet: B.id, row: U, column: Z }, workbook: T2, signal: e.signal, onWork: s.charge, maximumLength: e.limits.workbookTextBytes ?? e.limits.outputBytes, maximumNodes: e.limits.workbookNodes ?? 1 / 0 });
|
|
2611
|
+
if (!ie.ok) throw new he("unsupported-feature", "Unsupported ssconvert feature: invalid OpenDocument formula");
|
|
2612
|
+
let ce = { ...jt.functionExportAliases, ...xa };
|
|
2613
|
+
function q(oe) {
|
|
2614
|
+
s.charge(), oe.kind === "call" ? (Object.hasOwn(ce, oe.name) || (ce[oe.name] = oe.name.startsWith("ODF.") ? oe.name.slice(4) : "ORG.GNUMERIC." + oe.name), oe.args.forEach(q)) : oe.kind === "array" ? oe.rows.forEach((ae) => ae.forEach(q)) : oe.kind === "binary" ? (q(oe.left), q(oe.right)) : (oe.kind === "unary" || oe.kind === "parentheses") && q(oe.child);
|
|
2615
|
+
}
|
|
2616
|
+
return q(ie.document.root), Ka(ie.document, { ...jt, functionExportAliases: ce }, false, true, { quotedLabel(oe) {
|
|
2617
|
+
let ae = Wi(T2, oe, ie.document.position, s.charge);
|
|
2618
|
+
return s.charge(ae.length), ae;
|
|
2619
|
+
} });
|
|
2620
|
+
}, ye = function(L) {
|
|
2621
|
+
return L !== null && typeof L == "object" && !Object.isFrozen(L) ? Ui(L, e.limits) : L;
|
|
2622
|
+
}, we = function(L) {
|
|
2623
|
+
let B = ye(Rt(L));
|
|
2624
|
+
return (async function* () {
|
|
2625
|
+
for (let U of B) yield* s.retainedFragments(U);
|
|
2626
|
+
})();
|
|
2627
|
+
}, fe = function(L, B) {
|
|
2628
|
+
Le.set(L, typeof B == "string" && (!c || y) ? Ee.encode(B) : B);
|
|
2629
|
+
};
|
|
2630
|
+
var S = M, b = K, g2 = G, A = j, h = ye, R = we, N = fe;
|
|
2631
|
+
e.signal.throwIfAborted();
|
|
2632
|
+
let y;
|
|
2633
|
+
for (let L of r) for (let [B, U] of eo(L)) if (B === "encryption" && (y = Ia.get(U), y === void 0)) throw new he("invalid-request", "Invalid OpenDocument encryption profile");
|
|
2634
|
+
let F = y?.cipher === "aes-gcm", w = n === "extended", s = Ji(e, w), O = s.element, E = "metadata" in t ? await Yi(t, e.limits, () => e.signal.throwIfAborted(), e.createWorkingStorage?.bind(e)) : void 0, p = Ra(E?.metadata ?? t, e, s.charge), T2 = p.book;
|
|
2635
|
+
if (T2.sheets.some((L) => !Object.isFrozen(L.cells))) {
|
|
2636
|
+
let L = 0;
|
|
2637
|
+
T2 = { ...T2, sheets: T2.sheets.map((B) => {
|
|
2638
|
+
if (Object.isFrozen(B.cells)) return L += B.cells.length, L > e.limits.cells && de("cells"), B;
|
|
2639
|
+
let U = [];
|
|
2640
|
+
for (let Z of B.cells) ++L > e.limits.cells && de("cells"), U.push(Z);
|
|
2641
|
+
return { ...B, cells: Object.freeze(U) };
|
|
2642
|
+
}) };
|
|
2643
|
+
}
|
|
2644
|
+
let Y = createZipCodec(), C = { ...qa(e), maxArchiveBytes: e.limits.outputBytes, maxEntryBytes: e.limits.outputBytes, maxTotalBytes: e.limits.outputBytes };
|
|
2645
|
+
if (i) throw new he("invalid-request", "ODF writer is closed");
|
|
2646
|
+
if (c = e.createWorkingStorage?.(), i) throw new he("invalid-request", "ODF writer is closed");
|
|
2647
|
+
m = Fi(c, e.signal);
|
|
2648
|
+
let I3 = 0;
|
|
2649
|
+
d = await Ba(s, w, T2, e, c, M);
|
|
2650
|
+
let x = E ? /* @__PURE__ */ new Map() : void 0, W = 0;
|
|
2651
|
+
if (E) for (let L of T2.sheets) {
|
|
2652
|
+
let B = 0;
|
|
2653
|
+
for await (let U of E.cells(L.id)) ++W > e.limits.cells && de("cells"), await d.reserve(U), B++;
|
|
2654
|
+
x.set(L.id, B);
|
|
2655
|
+
}
|
|
2656
|
+
let v = 0;
|
|
2657
|
+
(!T2.sheets.length || T2.sheets.length > e.limits.sheets) && de("sheets");
|
|
2658
|
+
let ne = T2.sheets.map((L) => (s.charge(L.name.length), L.name));
|
|
2659
|
+
async function* ue(L) {
|
|
2660
|
+
async function* B() {
|
|
2661
|
+
for (let U of T2.names ?? []) {
|
|
2662
|
+
if (s.charge(), U.sheet !== L) continue;
|
|
2663
|
+
let Z = T2.sheets.find((Be) => Be.id === (U.position?.sheet ?? L) || Be.name === (U.position?.sheet ?? L)) ?? T2.sheets[0], _e = U.position?.row ?? 0, ie = U.position?.column ?? 0;
|
|
2664
|
+
K(_e, me.rows), K(ie, me.columns);
|
|
2665
|
+
let ce = j(U.expression, Z, _e, ie), q = Fn(_e, ie), oe = Xa(Z.name, "'", jt) + ".$" + q.slice(0, q.length - String(_e + 1).length) + "$" + (_e + 1), ae = nn(U.expression, { maximumDepth: e.limits.formulaDepth, position: { sheet: Z.id, row: _e, column: ie }, workbook: T2, signal: e.signal, onWork: s.charge, maximumLength: e.limits.workbookTextBytes ?? e.limits.outputBytes, maximumNodes: e.limits.workbookNodes ?? 1 / 0 });
|
|
2666
|
+
yield ae.ok && ae.document.root.kind === "reference" && !ae.document.root.label ? O("table:named-range", { "table:name": U.name, "table:cell-range-address": ce.slice(5, -1), "table:base-cell-address": oe }) : O("table:named-expression", { "table:name": U.name, "table:expression": ce, "table:base-cell-address": oe });
|
|
2667
|
+
}
|
|
2668
|
+
}
|
|
2669
|
+
yield* s.stream("table:named-expressions", {}, B());
|
|
2670
|
+
}
|
|
2671
|
+
let ve = T2.iteration, ze = O("table:calculation-settings", { "table:null-year": 1930, "table:automatic-find-labels": String(T2.automaticLabelLookup ?? false), "table:case-sensitive": "false", "table:precision-as-shown": "false", "table:search-criteria-must-apply-to-whole-cell": "true", "table:use-regular-expressions": "false", "table:use-wildcards": "false" }, O("table:null-date", { "table:date-value": T2.dateSystem === "1904" ? "1904-1-1" : "1899-12-30", "table:value-type": "date" }) + O("table:iteration", { "table:status": ve?.enabled ? "enable" : "disable", "table:steps": ve?.maximum ?? 100, "table:maximum-difference": ve?.tolerance ?? 1e-3 })), Q = await Ya(T2, s, e, c, M), Ye = wn(e, c, M);
|
|
2672
|
+
f.push(Ye);
|
|
2673
|
+
let et = wn(e, c, M);
|
|
2674
|
+
f.push(et);
|
|
2675
|
+
let lt = wn(e, c, M);
|
|
2676
|
+
f.push(lt);
|
|
2677
|
+
for (let L of T2.unsupportedRecords ?? []) {
|
|
2678
|
+
s.charge();
|
|
2679
|
+
let B = qe(L.data), U = qe(B?.xml);
|
|
2680
|
+
if (L.source === "Gnumeric_OpenCalc:openoffice" && U) if (L.kind === "content-validations") for (let Z of Rt(U)) await et.append(s.retainedFragments(ye(Z)));
|
|
2681
|
+
else L.kind === "database-ranges" && await lt.append(s.retainedFragments(ye(U)));
|
|
2682
|
+
}
|
|
2683
|
+
async function* J() {
|
|
2684
|
+
for (let [B, U] of T2.sheets.entries()) {
|
|
2685
|
+
let Ut = function(D) {
|
|
2686
|
+
if (K(D.row, me.rows), K(D.column, me.columns), ++v > e.limits.cells && de("cells"), x && yt >= x.get(U.id)) throw new he("invalid-request", "ODF source coordinates changed during replay");
|
|
2687
|
+
return yt++, rn(D.row, D.column);
|
|
2688
|
+
};
|
|
2689
|
+
var L = Ut;
|
|
2690
|
+
s.charge();
|
|
2691
|
+
let Z = qe(U.view?.gnumeric) ?? {}, _e = Rt(U.view?.odf).find((D) => qe(D)?.name === "table-properties"), ie = $t(_e, Lt.gnm), ce = Pa((U.unsupportedRecords ?? []).filter((D) => D.kind === "PrintInformation").flatMap((D) => D.data ? [D.data] : []), s, w), q = await Q.register("stylesAutomatic", "style:page-layout", "pl" + B, {}, O("style:page-layout-properties", ce)), oe = await Q.register("masters", "style:master-page", "mp" + B, { "style:page-layout-name": q }), ae = await Q.register("contentAutomatic", "style:style", "ta" + B, { "style:family": "table", "style:master-page-name": oe }, O("style:table-properties", { "table:display": U.visibility && U.visibility !== "visible" ? "false" : "true", "style:writing-mode": Number(Z.RTL_Layout ?? 0) ? "rl-tb" : "lr-tb", ...w ? { "gnm:display-formulas": String(!!Number(Z.DisplayFormulas ?? 0)), "gnm:display-col-header": String(!Number(Z.HideColHeader ?? 0)), "gnm:display-row-header": String(!Number(Z.HideRowHeader ?? 0)), "gnm:tab-color": ie["tab-color"], "gnm:tab-text-color": ie["tab-text-color"] } : {} })), Be = U.cells, $e = c ? new ka(c, 128) : /* @__PURE__ */ new Map(), rn = (D, H) => BigInt(D) << 14n | BigInt(H), yt = 0;
|
|
2692
|
+
for await (let D of E?.cells(U.id) ?? Be) {
|
|
2693
|
+
let H = Ut(D);
|
|
2694
|
+
await $e.set(H, BigInt(yt));
|
|
2695
|
+
}
|
|
2696
|
+
if (x && yt !== x.get(U.id)) throw new he("invalid-request", "ODF source coordinates changed during replay");
|
|
2697
|
+
async function Yt(D, H) {
|
|
2698
|
+
let ee = rn(D, H);
|
|
2699
|
+
await $e.get(ee) === void 0 && (++v > e.limits.cells && de("cells"), await $e.set(ee, 0n));
|
|
2700
|
+
}
|
|
2701
|
+
async function* Kt() {
|
|
2702
|
+
let D = $e instanceof Map ? [...$e].sort(([P], [k]) => P < k ? -1 : P > k ? 1 : 0) : $e.entries(), H = E?.cells(U.id)[Symbol.asyncIterator](), ee = 0;
|
|
2703
|
+
try {
|
|
2704
|
+
for await (let [P, k] of D) if (e.signal.throwIfAborted(), k === 0n) yield { row: Number(P >> 14n), column: Number(P & 0x3fffn), value: { kind: "blank" } };
|
|
2705
|
+
else if (H) {
|
|
2706
|
+
let X2 = await H.next();
|
|
2707
|
+
if (X2.done || k !== BigInt(++ee) || rn(X2.value.row, X2.value.column) !== P) throw new he("invalid-request", "ODF source coordinates changed during replay");
|
|
2708
|
+
yield X2.value;
|
|
2709
|
+
} else yield Be[Number(k - 1n)];
|
|
2710
|
+
if (H && !(await H.next()).done) throw new he("invalid-request", "ODF source coordinates changed during replay");
|
|
2711
|
+
} finally {
|
|
2712
|
+
await H?.return?.();
|
|
2713
|
+
}
|
|
2714
|
+
}
|
|
2715
|
+
let Ce = /* @__PURE__ */ new Map(), re = /* @__PURE__ */ new Map(), Pe = /* @__PURE__ */ new Map(), nt = /* @__PURE__ */ new Map(), Ue = [], Je = /* @__PURE__ */ new Map();
|
|
2716
|
+
for (let D of U.unsupportedRecords ?? []) {
|
|
2717
|
+
s.charge();
|
|
2718
|
+
let H = qe(D.data), ee = qe(H?.xml);
|
|
2719
|
+
if (D.source === "Gnumeric_OpenCalc:openoffice" && ee && typeof H?.row == "number" && typeof H.column == "number") {
|
|
2720
|
+
K(H.row, me.rows), K(H.column, me.columns);
|
|
2721
|
+
let P = `${H.row}:${H.column}`;
|
|
2722
|
+
if (D.kind === "table-cell") {
|
|
2723
|
+
let k = typeof H.rows == "number" ? H.rows : 1, X2 = typeof H.columns == "number" ? H.columns : 1;
|
|
2724
|
+
if (!Number.isSafeInteger(k) || !Number.isSafeInteger(X2) || k < 1 || X2 < 1) throw new he("invalid-request", "Invalid OpenDocument metadata repeat");
|
|
2725
|
+
let Te = { startRow: H.row, startColumn: H.column, endRow: H.row + k - 1, endColumn: H.column + X2 - 1 };
|
|
2726
|
+
G(Te), Ue.push({ range: Te, style: $t(ee, Lt.table)["style-name"] ?? (typeof H.styleName == "string" ? H.styleName : void 0), validation: typeof H.validation == "string" ? H.validation : void 0 });
|
|
2727
|
+
} else if (D.kind === "p" && typeof H.sourceText == "string") {
|
|
2728
|
+
let k = typeof H.rows == "number" ? H.rows : 1, X2 = typeof H.columns == "number" ? H.columns : 1, Te = { startRow: H.row, startColumn: H.column, endRow: H.row + k - 1, endColumn: H.column + X2 - 1 };
|
|
2729
|
+
G(Te);
|
|
2730
|
+
let He = Pe.get(P);
|
|
2731
|
+
Pe.set(P, { text: H.sourceText, richText: H.sourceRichText ?? [], xml: (He?.xml ?? "") + s.retained(ee, 0, (te) => va(te, "normalize", s.charge, ne)), range: Te });
|
|
2732
|
+
} else if (D.kind === "annotation" && ot.OO_NS_OFFICE.includes(String(ee.namespace))) {
|
|
2733
|
+
let k = ee.namespace !== Lt.office, X2;
|
|
2734
|
+
if (!k && typeof H.sourceComment == "string") {
|
|
2735
|
+
s.charge(H.sourceComment.length);
|
|
2736
|
+
try {
|
|
2737
|
+
let Te = JSON.parse(H.sourceComment);
|
|
2738
|
+
Array.isArray(Te) && Te.length === 3 && (X2 = JSON.stringify(Te.slice(1)));
|
|
2739
|
+
} catch {
|
|
2740
|
+
}
|
|
2741
|
+
}
|
|
2742
|
+
nt.set(P, { ...typeof H.sourceComment == "string" ? { signature: H.sourceComment } : {}, ...X2 === void 0 ? {} : { textSignature: X2 }, xml: k ? "" : s.retained(ee), node: k ? Zi(ee, s.charge) : ee }), await Yt(H.row, H.column);
|
|
2743
|
+
} else re.set(P, (re.get(P) ?? "") + s.retained(ee)), await Yt(H.row, H.column);
|
|
2744
|
+
} else if (D.kind === "Styles") for (let P of Rt(D.data)) {
|
|
2745
|
+
s.charge();
|
|
2746
|
+
let k = $t(P), X2 = Rt(P).find((te) => qe(te)?.name === "Style");
|
|
2747
|
+
if (!X2) continue;
|
|
2748
|
+
let Te = { startRow: Number(k.startRow), endRow: Number(k.endRow), startColumn: Number(k.startCol), endColumn: Number(k.endCol) };
|
|
2749
|
+
G(Te);
|
|
2750
|
+
let He = await Ha(X2, Te, `rg${B}_${Ue.length}`, U, s, d, e, j, ne);
|
|
2751
|
+
await Ye.append(He.styleXml), await et.append(He.validationXml), Ue.push({ range: Te, style: He.styleName, validation: He.validationName, link: He.link });
|
|
2752
|
+
}
|
|
2753
|
+
else if (D.kind === "Objects") for (let P of Rt(D.data)) {
|
|
2754
|
+
s.charge();
|
|
2755
|
+
let k = qe(P), X2 = $t(P);
|
|
2756
|
+
if ((k?.name === "CellComment" || k?.name === "GnmCellComment") && X2.ObjectBound) {
|
|
2757
|
+
let Te = nn("=" + X2.ObjectBound.split(":")[0], { maximumDepth: e.limits.formulaDepth, position: { sheet: U.id, row: 0, column: 0 }, signal: e.signal });
|
|
2758
|
+
if (Te.ok && Te.document.root.kind === "reference") {
|
|
2759
|
+
let He = Te.document.root.first, te = He.row?.value ?? 0, We = He.column?.value ?? 0, Ve = `${te}:${We}`;
|
|
2760
|
+
K(te, me.rows), K(We, me.columns), Ce.set(Ve, X2), await Yt(te, We);
|
|
2761
|
+
}
|
|
2762
|
+
} else await Un(`ODF ${n} writer does not export sheet '${U.name}' object '${String(k?.name ?? "unknown")}'
|
|
2763
|
+
`, e, "odf-write-loss");
|
|
2764
|
+
}
|
|
2765
|
+
}
|
|
2766
|
+
let gt = c ? new ka(c, 128) : void 0, Rn = gt ? void 0 : /* @__PURE__ */ new Set(), sn = 0;
|
|
2767
|
+
async function je(D) {
|
|
2768
|
+
sn = Math.max(sn, D), gt ? await gt.set(BigInt(D), 0n) : Rn.add(D);
|
|
2769
|
+
}
|
|
2770
|
+
await je(0);
|
|
2771
|
+
async function* ln() {
|
|
2772
|
+
async function* D() {
|
|
2773
|
+
if (gt) for await (let [ee] of gt.entries()) yield Number(ee);
|
|
2774
|
+
else yield* [...Rn].sort((ee, P) => ee - P);
|
|
2775
|
+
}
|
|
2776
|
+
let H;
|
|
2777
|
+
for await (let ee of D()) H !== void 0 && (yield [H, ee - H]), H = ee;
|
|
2778
|
+
}
|
|
2779
|
+
let xt = 0;
|
|
2780
|
+
for await (let D of Kt()) {
|
|
2781
|
+
let H = D.style?.gnumeric, ee = Rt(H).find((k) => qe(k)?.name === "HyperLink"), P = $t(ee);
|
|
2782
|
+
P.target && Je.set(`${D.row}:${D.column}`, { "xlink:href": P.type === "GnmHLinkCurWB" ? va(P.target, "export", s.charge, ne) : P.target, "xlink:type": "simple", "office:title": P.tip }), xt = Math.max(xt, D.column + 1), await je(D.row), await je(D.row + 1);
|
|
2783
|
+
}
|
|
2784
|
+
let Ht = [];
|
|
2785
|
+
for (let D of U.merges ?? []) {
|
|
2786
|
+
G(D);
|
|
2787
|
+
for (let H of Ht) if (s.charge(), D.startRow <= H.endRow && D.endRow >= H.startRow && D.startColumn <= H.endColumn && D.endColumn >= H.startColumn) throw new he("invalid-request", "Invalid overlapping OpenDocument merges");
|
|
2788
|
+
Ht.push(D), await je(D.startRow), await je(D.startRow + 1), await je(D.endRow), await je(D.endRow + 1);
|
|
2789
|
+
}
|
|
2790
|
+
for (let { range: D } of Ue) await je(D.startRow), await je(D.endRow + 1);
|
|
2791
|
+
let wt = m.axis(), Ct = m.axis();
|
|
2792
|
+
for await (let D of E?.axes ? E.axes(U.id, "rows") : U.rows ?? []) K(D.index, me.rows), await wt.get(D.index) === void 0 && await wt.add({ index: D.index, ...D.sizePoints === void 0 ? {} : { sizePoints: D.sizePoints }, ...D.hidden === void 0 ? {} : { hidden: D.hidden } }), await je(D.index), await je(D.index + 1);
|
|
2793
|
+
for await (let D of E?.axes ? E.axes(U.id, "columns") : U.columns ?? []) {
|
|
2794
|
+
if (K(D.index, me.columns), await Ct.get(D.index) !== void 0) throw new he("invalid-request", "Duplicate OpenDocument column metadata");
|
|
2795
|
+
await Ct.add({ index: D.index, ...D.sizePoints === void 0 ? {} : { sizePoints: D.sizePoints }, ...D.hidden === void 0 ? {} : { hidden: D.hidden } });
|
|
2796
|
+
}
|
|
2797
|
+
let It = U.size?.rows ?? Pn.rows;
|
|
2798
|
+
K(It - 1, me.rows), It = Math.max(It, sn), await je(It);
|
|
2799
|
+
async function* bn() {
|
|
2800
|
+
let D = 0, H = 0;
|
|
2801
|
+
for await (let X2 of Ct.values()) {
|
|
2802
|
+
X2.index > D && (yield O("table:table-column", { "table:number-columns-repeated": X2.index - D }));
|
|
2803
|
+
let Te = `co${B}_${H++}`;
|
|
2804
|
+
await Ye.append(O("style:style", { "style:name": Te, "style:family": "table-column" }, O("style:table-column-properties", { "style:column-width": X2.sizePoints === void 0 ? void 0 : X2.sizePoints + "pt" }))), yield O("table:table-column", { "table:style-name": Te, "table:visibility": X2.hidden ? "collapse" : "visible" }), D = X2.index + 1;
|
|
2805
|
+
}
|
|
2806
|
+
let ee = Math.max(U.size?.columns ?? Pn.columns, D);
|
|
2807
|
+
K(ee - 1, me.columns), ee = Math.max(ee, xt);
|
|
2808
|
+
for (let { range: X2 } of Ue) ee = Math.max(ee, X2.endColumn + 1);
|
|
2809
|
+
for (let X2 of U.merges ?? []) ee = Math.max(ee, X2.endColumn + 1);
|
|
2810
|
+
ee > D && (yield O("table:table-column", { "table:number-columns-repeated": ee - D > 1 ? ee - D : void 0 }));
|
|
2811
|
+
let P = Kt(), k = wt.values();
|
|
2812
|
+
try {
|
|
2813
|
+
let X2 = await P.next(), Te = await k.next(), He = 0;
|
|
2814
|
+
for await (let [te, We] of ln()) {
|
|
2815
|
+
if (te >= me.rows) break;
|
|
2816
|
+
s.charge(), He++ % 64 === 0 && (await new Promise((Ie) => setTimeout(Ie, 0)), e.signal.throwIfAborted());
|
|
2817
|
+
let Ve = /* @__PURE__ */ new Map(), Ln = (U.merges ?? []).filter((Ie) => te >= Ie.startRow && te <= Ie.endRow);
|
|
2818
|
+
for (; !X2.done && X2.value.row === te; ) Ve.set(X2.value.column, X2.value), X2 = await P.next();
|
|
2819
|
+
s.charge(U.merges?.length ?? 0), s.charge(Ue.length);
|
|
2820
|
+
let sa = Ue.filter((Ie) => te >= Ie.range.startRow && te <= Ie.range.endRow).reverse(), Mt = /* @__PURE__ */ new Set();
|
|
2821
|
+
for (let Ie of Ve.keys()) Mt.add(Ie), Mt.add(Ie + 1);
|
|
2822
|
+
for (let Ie of Ln) Mt.add(Ie.startColumn), Mt.add(Ie.startColumn + 1), Mt.add(Ie.endColumn + 1);
|
|
2823
|
+
for (let Ie of sa) Mt.add(Ie.range.startColumn), Mt.add(Ie.range.endColumn + 1);
|
|
2824
|
+
let hn = !Te.done && Te.value.index === te ? Te.value : void 0;
|
|
2825
|
+
hn && (Te = await k.next());
|
|
2826
|
+
let la = { "table:number-rows-repeated": We > 1 ? We : void 0, "table:visibility": hn?.hidden ? "collapse" : void 0 };
|
|
2827
|
+
if (hn?.sizePoints !== void 0) {
|
|
2828
|
+
let Ie = `ro${B}_${te}`;
|
|
2829
|
+
await Ye.append(O("style:style", { "style:name": Ie, "style:family": "table-row" }, O("style:table-row-properties", { "style:row-height": hn.sizePoints + "pt" }))), la["table:style-name"] = Ie;
|
|
2830
|
+
}
|
|
2831
|
+
async function* ei() {
|
|
2832
|
+
let Ie = [...Mt].sort((Oe, Fe) => Oe - Fe), ct = 0;
|
|
2833
|
+
for (let Oe of Ie) {
|
|
2834
|
+
if (s.charge(), Oe < ct || Oe >= me.columns) continue;
|
|
2835
|
+
Oe > ct && (yield O("table:table-cell", Oe - ct > 1 ? { "table:number-columns-repeated": Oe - ct } : {}));
|
|
2836
|
+
let Fe = Ve.get(Oe), at = Ln.find((Ae) => Oe >= Ae.startColumn && Oe <= Ae.endColumn), mt = sa.find((Ae) => Oe >= Ae.range.startColumn && Oe <= Ae.range.endColumn);
|
|
2837
|
+
if (at && (te !== at.startRow || Oe !== at.startColumn)) {
|
|
2838
|
+
let Ae = Math.min(at.endColumn + 1, Ie.find((Se) => Se > Oe) ?? at.endColumn + 1);
|
|
2839
|
+
yield O("table:covered-table-cell", Ae - Oe > 1 ? { "table:number-columns-repeated": Ae - Oe } : {}), ct = Ae;
|
|
2840
|
+
continue;
|
|
2841
|
+
}
|
|
2842
|
+
if (!Fe && !at && !mt) {
|
|
2843
|
+
ct = Oe;
|
|
2844
|
+
continue;
|
|
2845
|
+
}
|
|
2846
|
+
let Me = {};
|
|
2847
|
+
Fe && !Fe.formula && Fe.value.kind === "error" && (w && (Me["gnm:error-value"] = Fe.value.value), Me["table:formula"] = "of:=" + Fe.value.value), at && (Me["table:number-columns-spanned"] = at.endColumn - at.startColumn + 1, Me["table:number-rows-spanned"] = at.endRow - at.startRow + 1);
|
|
2848
|
+
let cn = `${te}:${Oe}`, kt = U.formulaGroups?.find((Ae) => Ae.kind === "array" && te >= Ae.range.startRow && te <= Ae.range.endRow && Oe >= Ae.range.startColumn && Oe <= Ae.range.endColumn);
|
|
2849
|
+
s.charge(U.formulaGroups?.length ?? 0), Fe?.formula && (!kt || te === kt.range.startRow && Oe === kt.range.startColumn) && (Me["table:formula"] = j(Fe.formula, U, te, Oe), kt && (G(kt.range), Me["table:number-matrix-columns-spanned"] = kt.range.endColumn - Oe + 1, Me["table:number-matrix-rows-spanned"] = kt.range.endRow - te + 1)), Me["table:content-validation-name"] = mt?.validation, mt?.style && (Me["table:style-name"] = mt.style);
|
|
2850
|
+
let fn = re.get(cn) ?? "", ft = Ce.get(cn), dt = nt.get(cn), ca = ft ? JSON.stringify([ft.Author ?? null, ft.Text ?? "", ft.TextFormat ?? null]) : void 0;
|
|
2851
|
+
if (s.charge((ca?.length ?? 0) + (dt?.signature?.length ?? 0)), dt?.xml && (dt.signature === void 0 || dt.signature === ca)) fn += dt.xml;
|
|
2852
|
+
else if (ft) {
|
|
2853
|
+
let Ae = ft.Text ?? "", Se = JSON.stringify([Ae, ft.TextFormat ?? null]);
|
|
2854
|
+
s.charge(Se.length);
|
|
2855
|
+
let Dt = dt?.textSignature === Se, qt = "";
|
|
2856
|
+
if (!Dt) {
|
|
2857
|
+
let St = ao(ft.TextFormat, s.charge), Nt = St?.length ? await Xn(Ae, St, s, Q, w, void 0, false) : s.text(Ae);
|
|
2858
|
+
qt = O("text:p", {}, Nt);
|
|
2859
|
+
}
|
|
2860
|
+
let dn = dt ? Rt(dt.node).filter((St) => {
|
|
2861
|
+
s.charge();
|
|
2862
|
+
let Nt = qe(St);
|
|
2863
|
+
return !(!Dt && Nt?.name === "p" && Nt.namespace === Lt.text || Nt?.name === "creator" && Nt.namespace === Lt.dc);
|
|
2864
|
+
}).map((St) => s.retained(St)).join("") : "", Jt = (ft.Author === void 0 ? "" : O("dc:creator", {}, s.escape(ft.Author))) + dn + qt;
|
|
2865
|
+
fn += dt ? s.retained(dt.node, 0, void 0, false, Jt) : O("office:annotation", {}, Jt);
|
|
2866
|
+
}
|
|
2867
|
+
if (Fe) {
|
|
2868
|
+
let Ae = await d.register(Fe);
|
|
2869
|
+
Ae.name && !mt?.style && (Me["table:style-name"] = Ae.name);
|
|
2870
|
+
let Se = Fe.formula ? Fe.cachedResult ?? Fe.value : Fe.value;
|
|
2871
|
+
if (Se.kind === "number") {
|
|
2872
|
+
if (!Number.isFinite(Se.value)) throw new he("invalid-request", "Invalid OpenDocument numeric value");
|
|
2873
|
+
if (Ae.kind === "date") {
|
|
2874
|
+
let Ze = no(Se.value, { book: T2 });
|
|
2875
|
+
if (!Ze) throw new he("unsupported-feature", "Unsupported ssconvert feature: OpenDocument date outside supported calendar");
|
|
2876
|
+
Me["office:value-type"] = "date";
|
|
2877
|
+
let Qt = Math.round((Se.value - Math.floor(Se.value)) * 86400) % 86400;
|
|
2878
|
+
Me["office:date-value"] = Ze.toISOString().slice(0, 10) + (Se.value !== Math.floor(Se.value) ? "T" + [Math.floor(Qt / 3600), Math.floor(Qt / 60) % 60, Qt % 60].map((ti) => String(ti).padStart(2, "0")).join(":") : "");
|
|
2879
|
+
} else if (Ae.kind === "time" && Se.value >= 0 && Number.isFinite(Se.value * 86400)) {
|
|
2880
|
+
Me["office:value-type"] = "time";
|
|
2881
|
+
let Ze = Se.value * 86400, Qt = Ze % 60;
|
|
2882
|
+
Me["office:time-value"] = `PT0${za(Math.floor(Ze / 3600))}H${String(Math.floor(Ze / 60) % 60).padStart(2, "0")}M${Qt < 10 ? "0" : ""}${za(Qt)}S`;
|
|
2883
|
+
} else Me["office:value-type"] = "float", Me["office:value"] = Se.value;
|
|
2884
|
+
} else Se.kind === "boolean" ? (Me["office:value-type"] = "boolean", Me["office:boolean-value"] = String(Se.value)) : (Se.kind === "string" || Se.kind === "error") && (Me["office:value-type"] = "string", (Fe.formula || Se.kind === "error") && (Me["office:string-value"] = Se.value), Se.kind === "error" && !Fe.formula && (Me["table:formula"] = "of:=" + Se.value, w && (Me["gnm:error-value"] = Se.value)));
|
|
2885
|
+
s.charge(Pe.size);
|
|
2886
|
+
let Dt = Fe.displayedText ?? await to(Fe, T2, e), qt = Pe.get(cn) ?? [...Pe.values()].find((Ze) => te >= Ze.range.startRow && te <= Ze.range.endRow && Oe >= Ze.range.startColumn && Oe <= Ze.range.endColumn), dn = mt?.link ?? Je.get(cn), Jt = Se.kind === "string" && Dt === Se.value ? Fe.richText : void 0, St = JSON.stringify(qt?.richText ?? []), Nt = JSON.stringify(Jt ?? []);
|
|
2887
|
+
if (s.charge(St.length + Nt.length), qt?.text === Dt && St === Nt) fn += qt.xml;
|
|
2888
|
+
else {
|
|
2889
|
+
let Ze = Jt?.length ? await Xn(Dt, Jt, s, Q, w, dn) : dn ? O("text:a", dn, s.escape(Dt)) : s.text(Dt);
|
|
2890
|
+
fn += O("text:p", {}, Ze);
|
|
2891
|
+
}
|
|
2892
|
+
}
|
|
2893
|
+
let Yn = !Fe && !at && mt ? Math.min(mt.range.endColumn + 1, Ie.find((Ae) => Ae > Oe) ?? mt.range.endColumn + 1) : Oe + 1;
|
|
2894
|
+
Yn - Oe > 1 && (Me["table:number-columns-repeated"] = Yn - Oe), yield O("table:table-cell", Me, fn), ct = Yn;
|
|
2895
|
+
}
|
|
2896
|
+
ct < ee && (yield O("table:table-cell", { "table:number-columns-repeated": ee - ct > 1 ? ee - ct : void 0 }));
|
|
2897
|
+
}
|
|
2898
|
+
yield* s.stream("table:table-row", la, ei());
|
|
2899
|
+
}
|
|
2900
|
+
yield* ue(U.id);
|
|
2901
|
+
} finally {
|
|
2902
|
+
await Promise.all([P.return(void 0), k.return(void 0)]);
|
|
2903
|
+
}
|
|
2904
|
+
}
|
|
2905
|
+
yield* s.stream("table:table", { "table:name": U.name, "table:style-name": ae }, bn());
|
|
2906
|
+
}
|
|
2907
|
+
}
|
|
2908
|
+
let V = c ? new ZipWriteChain(c, 16384, e.signal, async (L) => {
|
|
2909
|
+
L.throwIfAborted();
|
|
2910
|
+
}) : void 0, se = 0;
|
|
2911
|
+
for await (let L of J()) {
|
|
2912
|
+
if (M(L.length), !V) {
|
|
2913
|
+
a.push(L.slice());
|
|
2914
|
+
continue;
|
|
2915
|
+
}
|
|
2916
|
+
for (let B = 0; B < L.length; ) {
|
|
2917
|
+
let U = Math.min(l2.length - se, L.length - B);
|
|
2918
|
+
l2.set(L.subarray(B, B + U), se), se += U, B += U, se === l2.length && (await V.append([l2], se), se = 0);
|
|
2919
|
+
}
|
|
2920
|
+
}
|
|
2921
|
+
V && se && await V.append([l2.subarray(0, se)], se);
|
|
2922
|
+
async function* Re() {
|
|
2923
|
+
V ? yield* V.read() : yield* a;
|
|
2924
|
+
}
|
|
2925
|
+
let ge = new Map(T2.sheets.map((L) => (s.charge(), [L.id, L])));
|
|
2926
|
+
async function* be() {
|
|
2927
|
+
for (let L of T2.sheets) for (let B of L.labelRanges ?? []) {
|
|
2928
|
+
if (s.charge(), G(B.labels), G(B.data), B.axis !== "row" && B.axis !== "column") throw new he("invalid-request", "Invalid OpenDocument label orientation");
|
|
2929
|
+
let U = B.dataSheet === void 0 ? L : ge.get(B.dataSheet);
|
|
2930
|
+
if (!U) throw new he("unsupported-feature", "OpenDocument label data sheet is not exported");
|
|
2931
|
+
let Z = (ie, ce) => "$" + Fn(0, ce).slice(0, -1) + "$" + (ie + 1), _e = (ie, ce) => "$" + Xa(ce, "'", jt) + "." + Z(ie.startRow, ie.startColumn) + ":." + Z(ie.endRow, ie.endColumn);
|
|
2932
|
+
yield O("table:label-range", { "table:label-cell-range-address": _e(B.labels, L.name), "table:data-cell-range-address": _e(B.data, U.name), "table:orientation": B.axis });
|
|
2933
|
+
}
|
|
2934
|
+
}
|
|
2935
|
+
async function* le() {
|
|
2936
|
+
yield ze, et.hasContent && (yield* s.stream("table:content-validations", {}, et.render())), yield* Re(), T2.sheets.some((L) => L.labelRanges?.length) && (yield* s.stream("table:label-ranges", {}, be())), yield* ue(), yield* lt.render();
|
|
2937
|
+
}
|
|
2938
|
+
let Le = /* @__PURE__ */ new Map(), Ee = new TextEncoder();
|
|
2939
|
+
F && e.own(() => {
|
|
2940
|
+
for (let L of Le.values()) L instanceof Uint8Array && L.fill(0);
|
|
2941
|
+
}), fe("mimetype", "application/vnd.oasis.opendocument.spreadsheet");
|
|
2942
|
+
async function* Ne() {
|
|
2943
|
+
yield O("office:scripts"), yield* s.stream("office:font-face-decls", {}, Q.render("fonts"));
|
|
2944
|
+
async function* L() {
|
|
2945
|
+
yield* Q.render("contentAutomatic"), yield* Ye.render(), yield* d.render();
|
|
2946
|
+
}
|
|
2947
|
+
yield* s.stream("office:automatic-styles", {}, L()), yield* s.stream("office:body", {}, s.stream("office:spreadsheet", {}, le()));
|
|
2948
|
+
}
|
|
2949
|
+
fe("content.xml", s.documentStream("office:document-content", Ne()));
|
|
2950
|
+
async function* ut() {
|
|
2951
|
+
yield* s.stream("office:font-face-decls", {}, Q.render("fonts")), yield* s.stream("office:styles", {}, Q.render("styles")), yield* s.stream("office:automatic-styles", {}, Q.render("stylesAutomatic")), yield* s.stream("office:master-styles", {}, Q.render("masters"));
|
|
2952
|
+
}
|
|
2953
|
+
fe("styles.xml", s.documentStream("office:document-styles", ut())), fe("meta.xml", s.document("office:document-meta", O("office:meta", {}, O("meta:generator", {}, "Gnumeric/1.12.61")))), fe("settings.xml", s.document("office:document-settings", O("office:settings", {}, O("config:config-item-set", { "config:name": "gnm:settings" }, O("config:config-item", { "config:name": "gnm:has_foreign", "config:type": "boolean" }, String(w)) + O("config:config-item", { "config:name": "gnm:active-sheet", "config:type": "string" }, s.escape(T2.sheets.find((L) => L.id === T2.activeSheet)?.name ?? T2.sheets[0].name))))));
|
|
2954
|
+
for (let L of T2.unsupportedRecords ?? []) {
|
|
2955
|
+
s.charge();
|
|
2956
|
+
let B = qe(L.data);
|
|
2957
|
+
if (!(L.source !== "Gnumeric_OpenCalc:openoffice" || !B)) if ((L.kind === "embedded-resource" || L.kind === "embedded-document") && typeof B.path == "string") {
|
|
2958
|
+
let U = B.path;
|
|
2959
|
+
if (Le.has(U) || U.startsWith("/") || U.includes("\\") || U.split("/").some((Z) => !Z || Z === "." || Z === "..")) throw new he("invalid-request", "Invalid OpenDocument embedded path");
|
|
2960
|
+
if (L.kind === "embedded-document") {
|
|
2961
|
+
let Z = qe(B.xml);
|
|
2962
|
+
if (Z?.name !== "document-content" && Z?.name !== "document-styles") throw new he("invalid-request", "Invalid OpenDocument embedded document root");
|
|
2963
|
+
fe(U, s.documentStream("office:" + Z.name, we(B.xml)));
|
|
2964
|
+
} else if (B.encoding === "hex" && typeof B.bytes == "string") {
|
|
2965
|
+
if (s.charge(B.bytes.length), B.bytes.length % 2 || [...B.bytes].some((_e) => !"0123456789abcdefABCDEF".includes(_e))) throw new he("invalid-request", "Invalid OpenDocument embedded bytes");
|
|
2966
|
+
B.bytes.length / 2 > e.limits.outputBytes && de("embedded bytes");
|
|
2967
|
+
let Z = new Uint8Array(B.bytes.length / 2);
|
|
2968
|
+
for (let _e = 0; _e < Z.length; _e++) Z[_e] = parseInt(B.bytes.slice(_e * 2, _e * 2 + 2), 16);
|
|
2969
|
+
Le.set(U, Z);
|
|
2970
|
+
}
|
|
2971
|
+
} else ["document-meta", "document-settings"].includes(L.kind) && B.xml && fe(L.kind === "document-meta" ? "meta.xml" : "settings.xml", s.documentStream("office:" + L.kind, we(B.xml)));
|
|
2972
|
+
}
|
|
2973
|
+
let xe = y ? /* @__PURE__ */ new Map() : void 0;
|
|
2974
|
+
if (xe) for (let [L, B] of Le) {
|
|
2975
|
+
let U = typeof B == "string" ? Ee.encode(B) : B instanceof Uint8Array ? B : await Bn(B);
|
|
2976
|
+
Le.set(L, U), xe.set(L, U);
|
|
2977
|
+
}
|
|
2978
|
+
let tt = y === void 0 || F ? void 0 : await Zn(xe, e, s, y);
|
|
2979
|
+
fe("META-INF/manifest.xml", '<?xml version="1.0" encoding="UTF-8"?>' + O("manifest:manifest", { "xmlns:manifest": "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:version": "1.2" }, O("manifest:file-entry", { "manifest:full-path": "/", "manifest:media-type": "application/vnd.oasis.opendocument.spreadsheet", "manifest:version": "1.2" }) + (T2.unsupportedRecords ?? []).filter((L) => L.kind === "embedded-document").flatMap((L) => {
|
|
2980
|
+
let B = qe(L.data);
|
|
2981
|
+
return typeof B?.path == "string" && B.path.endsWith("/content.xml") ? [O("manifest:file-entry", { "manifest:full-path": B.path.slice(0, -11), "manifest:media-type": "application/vnd.oasis.opendocument.chart" })] : [];
|
|
2982
|
+
}).join("") + [...Le.keys()].filter((L) => L !== "mimetype").map((L) => O("manifest:file-entry", { "manifest:full-path": L, "manifest:media-type": L.endsWith(".xml") ? "text/xml" : L.endsWith(".png") ? "image/png" : L.endsWith(".jpg") || L.endsWith(".jpeg") ? "image/jpeg" : "", "manifest:size": tt?.get(L)?.size }, tt?.get(L)?.declaration ?? "")).join("")));
|
|
2983
|
+
let Ot = 0;
|
|
2984
|
+
async function* ht(L, B = tt) {
|
|
2985
|
+
L.size > C.maxMembers - Ot && de("ZIP members"), Ot += L.size;
|
|
2986
|
+
let U = [], Z = 0, _e = c ? Y.createStagedWriter(c, C, e.signal) : void 0;
|
|
2987
|
+
try {
|
|
2988
|
+
for (let [ie, ce] of L) {
|
|
2989
|
+
let q = B?.get(ie)?.bytes ?? ce, oe = { modified: /* @__PURE__ */ new Date("2000-01-01Z"), mode: 420, directory: false, symlink: false, compression: ie === "mimetype" || B?.has(ie) ? "store" : "deflate" };
|
|
2990
|
+
if (_e) {
|
|
2991
|
+
async function* ae() {
|
|
2992
|
+
typeof q == "string" || q instanceof Uint8Array ? yield q : yield* q;
|
|
2993
|
+
}
|
|
2994
|
+
async function* Be() {
|
|
2995
|
+
for await (let $e of xi(ae(), "UTF-8", false, e)) s.charge($e.length), Z += $e.length, Z > e.limits.outputBytes && de("output bytes"), yield $e;
|
|
2996
|
+
}
|
|
2997
|
+
await _e.addSource(ie, Be(), oe);
|
|
2998
|
+
} else {
|
|
2999
|
+
let ae = typeof q == "string" ? Ee.encode(q) : q instanceof Uint8Array ? q : await Bn(q);
|
|
3000
|
+
s.charge(ae.length), Z += ae.length, Z > e.limits.outputBytes && de("output bytes"), U.push(await Y.makeZipEntry(ie, ae, oe, C, e.signal));
|
|
3001
|
+
}
|
|
3002
|
+
}
|
|
3003
|
+
_e ? yield* _e.finish() : yield await Y.writeZipArchive({ entries: U, comment: new Uint8Array() }, C, e.signal);
|
|
3004
|
+
} catch (ie) {
|
|
3005
|
+
throw e.signal.throwIfAborted(), ie instanceof CodecError && ie.code === "resource-limit" && de("output package"), ie;
|
|
3006
|
+
} finally {
|
|
3007
|
+
if (F) for (let ie of U) ie.data.fill(0);
|
|
3008
|
+
}
|
|
3009
|
+
}
|
|
3010
|
+
if (!F) {
|
|
3011
|
+
yield* ht(Le);
|
|
3012
|
+
return;
|
|
3013
|
+
}
|
|
3014
|
+
Le.size + 3 > C.maxMembers && de("ZIP members");
|
|
3015
|
+
let rt = await Bn(ht(Le));
|
|
3016
|
+
try {
|
|
3017
|
+
let L = await Zn(/* @__PURE__ */ new Map([["encrypted-package", rt]]), e, s, y), B = L.get("encrypted-package"), U = xe.get("mimetype"), Z = '<?xml version="1.0" encoding="UTF-8"?>' + O("manifest:manifest", { "xmlns:manifest": Lt.manifest, "xmlns:loext": Qi, "manifest:version": "1.4" }, O("manifest:file-entry", { "manifest:full-path": "encrypted-package", "manifest:media-type": new TextDecoder().decode(U), "manifest:size": B.size }, B.declaration));
|
|
3018
|
+
yield* ht(/* @__PURE__ */ new Map([["mimetype", U], ["META-INF/manifest.xml", Ee.encode(Z)], ["encrypted-package", B.bytes]]), L);
|
|
3019
|
+
} finally {
|
|
3020
|
+
rt.fill(0);
|
|
3021
|
+
for (let L of Le.values()) L instanceof Uint8Array && L.fill(0);
|
|
3022
|
+
}
|
|
3023
|
+
} catch (y) {
|
|
3024
|
+
throw _ = { error: y }, y;
|
|
3025
|
+
} finally {
|
|
3026
|
+
for (let y of f) y.dispose();
|
|
3027
|
+
d?.dispose(), l2.fill(0);
|
|
3028
|
+
for (let y of a) y.fill(0);
|
|
3029
|
+
await u2().catch((y) => {
|
|
3030
|
+
throw _ ? new AggregateError([_.error, y], "ODF export and storage cleanup failed") : y;
|
|
3031
|
+
});
|
|
3032
|
+
}
|
|
3033
|
+
};
|
|
3034
|
+
}
|
|
3035
|
+
export {
|
|
3036
|
+
Eo as createOdfStreamWriter,
|
|
3037
|
+
ys as createOdfWriter,
|
|
3038
|
+
Ls as probeOdf,
|
|
3039
|
+
lo as readOdf,
|
|
3040
|
+
hs as readOdfWorkbookSource
|
|
3041
|
+
};
|