stringify all 's' cell values (fixes #2795)

This commit is contained in:
SheetJS 2022-09-28 23:08:10 -04:00
parent 4ae4f0fad9
commit 654d6f98c3
12 changed files with 2607 additions and 568 deletions

@ -311,7 +311,7 @@ function sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {
var cp = +dbf_reverse_map[/*::String(*/current_codepage/*::)*/] || 0x03;
h.write_shift(4, 0x00000000 | (cp<<8));
if(dbf_codepage_map[cp] != +o.codepage) {
console.error("DBF Unsupported codepage " + current_codepage + ", using 1252");
if(o.codepage) console.error("DBF Unsupported codepage " + current_codepage + ", using 1252");
current_codepage = 1252;
}
@ -578,7 +578,7 @@ var SYLK = /*#__PURE__*/(function() {
case 'b': o += cell.v ? "TRUE" : "FALSE"; break;
case 'e': o += cell.w || cell.v; break;
case 'd': o += '"' + (cell.w || cell.v) + '"'; break;
case 's': o += '"' + cell.v.replace(/"/g,"").replace(/;/g, ";;") + '"'; break;
case 's': o += '"' + (cell.v == null ? "" : String(cell.v)).replace(/"/g,"").replace(/;/g, ";;") + '"'; break;
}
return o;
}

@ -229,6 +229,7 @@ function write_sst_xml(sst/*:SST*/, opts)/*:string*/ {
else {
sitag += "<t";
if(!s.t) s.t = "";
if(typeof s.t !== "string") s.t = String(s.t);
if(s.t.match(straywsregex)) sitag += ' xml:space="preserve"';
sitag += ">" + escapexml(s.t) + "</t>";
}

@ -258,9 +258,10 @@ function parse_BrtCellSt(data) {
return [cell, value, 'str'];
}
function write_BrtCellSt(cell, ncell, o) {
var data = cell.v == null ? "" : String(cell.v);
if(o == null) o = new_buf(12 + 4 * cell.v.length);
write_XLSBCell(ncell, o);
write_XLWideString(cell.v, o);
write_XLWideString(data, o);
return o.length > o.l ? o.slice(0, o.l) : o;
}
function parse_BrtShortSt(data) {
@ -269,9 +270,10 @@ function parse_BrtShortSt(data) {
return [cell, value, 'str'];
}
function write_BrtShortSt(cell, ncell, o) {
if(o == null) o = new_buf(8 + 4 * cell.v.length);
var data = cell.v == null ? "" : String(cell.v);
if(o == null) o = new_buf(8 + 4 * data.length);
write_XLSBShortCell(ncell, o);
write_XLWideString(cell.v, o);
write_XLWideString(data, o);
return o.length > o.l ? o.slice(0, o.l) : o;
}
@ -824,7 +826,7 @@ function write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:num
switch(cell.t) {
case 's': case 'str':
if(opts.bookSST) {
vv = get_sst_id(opts.Strings, (cell.v/*:any*/), opts.revStrings);
vv = get_sst_id(opts.Strings, (cell.v == null ? "" : String(cell.v)/*:any*/), opts.revStrings);
o.t = "s"; o.v = vv;
if(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));
else write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));

@ -68,7 +68,7 @@ function write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:n
case 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;
/* TODO: codepage, sst */
case 's': case 'str':
write_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||"").slice(0,255)));
write_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, cell.v == null ? "" : String(cell.v).slice(0,255)));
return;
}
write_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));
@ -192,9 +192,9 @@ function write_ws_biff8_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:n
/* TODO: codepage, sst */
case 's': case 'str':
if(opts.bookSST) {
var isst = get_sst_id(opts.Strings, cell.v, opts.revStrings);
var isst = get_sst_id(opts.Strings, cell.v == null ? "" : String(cell.v), opts.revStrings);
write_biff_rec(ba, 0x00fd /* LabelSst */, write_LabelSst(R, C, isst, os, opts));
} else write_biff_rec(ba, 0x0204 /* Label */, write_Label(R, C, (cell.v||"").slice(0,255), os, opts));
} else write_biff_rec(ba, 0x0204 /* Label */, write_Label(R, C, (cell.v == null ? "" : String(cell.v)).slice(0,255), os, opts));
break;
default:
write_biff_rec(ba, 0x0201 /* Blank */, write_XLSCell(R, C, os));

@ -169,6 +169,39 @@ function varint_to_i32(buf) {
}
return i32;
}
function varint_to_u64(buf) {
var l = 0, lo = buf[l] & 127, hi = 0;
varint:
if (buf[l++] >= 128) {
lo |= (buf[l] & 127) << 7;
if (buf[l++] < 128)
break varint;
lo |= (buf[l] & 127) << 14;
if (buf[l++] < 128)
break varint;
lo |= (buf[l] & 127) << 21;
if (buf[l++] < 128)
break varint;
lo |= (buf[l] & 127) << 28;
hi = buf[l] >> 4 & 7;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 3;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 10;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 17;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 24;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 31;
}
return [lo >>> 0, hi >>> 0];
}
function parse_shallow(buf) {
var out = [], ptr = [0];
while (ptr[0] < buf.length) {
@ -705,10 +738,12 @@ function write_new_storage(cell, sst) {
l += 8;
break;
case "s":
if (sst.indexOf(cell.v) == -1)
throw new Error("Value ".concat(cell.v, " missing from SST!"));
var s = cell.v == null ? "" : String(cell.v);
var isst = sst.indexOf(s);
if (isst == -1)
sst[isst = sst.length] = s;
out[1] = 3;
dv.setUint32(l, sst.indexOf(cell.v), true);
dv.setUint32(l, isst, true);
flags |= 8;
l += 4;
break;
@ -735,10 +770,12 @@ function write_old_storage(cell, sst) {
l += 8;
break;
case "s":
if (sst.indexOf(cell.v) == -1)
throw new Error("Value ".concat(cell.v, " missing from SST!"));
var s = cell.v == null ? "" : String(cell.v);
var isst = sst.indexOf(s);
if (isst == -1)
sst[isst = sst.length] = s;
out[2] = 3;
dv.setUint32(l, sst.indexOf(cell.v), true);
dv.setUint32(l, isst, true);
flags |= 16;
l += 4;
break;
@ -772,6 +809,22 @@ function write_TSP_Reference(idx) {
[{ type: 0, data: write_varint49(idx) }]
]);
}
function numbers_add_oref(iwa, ref) {
var _a;
var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];
var orefidx = orefs.indexOf(ref);
if (orefidx == -1) {
orefs.push(ref);
iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];
}
}
function numbers_del_oref(iwa, ref) {
var _a;
var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];
iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs.filter(function(r) {
return r != ref;
})) }];
}
function parse_TST_TableDataList(M, root) {
var pb = parse_shallow(root.data);
var type = varint_to_i32(pb[1][0].data);
@ -779,6 +832,8 @@ function parse_TST_TableDataList(M, root) {
var data = [];
(entries || []).forEach(function(entry) {
var le = parse_shallow(entry.data);
if (!le[1])
return;
var key = varint_to_i32(le[1][0].data) >>> 0;
switch (type) {
case 1:
@ -988,7 +1043,7 @@ function parse_TN_DocumentArchive(M, root, opts) {
return out;
}
function parse_numbers_iwa(cfb, opts) {
var _a, _b, _c, _d, _e, _f, _g, _h;
var _a, _b, _c, _d, _e, _f, _g;
var M = {}, indices = [];
cfb.FullPaths.forEach(function(p) {
if (p.match(/\.iwpv2/))
@ -1018,9 +1073,9 @@ function parse_numbers_iwa(cfb, opts) {
});
if (!indices.length)
throw new Error("File has no messages");
if (((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1e4)
if (((_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0].meta) == null ? void 0 : _b[1]) == null ? void 0 : _c[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1e4)
throw new Error("Pages documents are not supported");
var docroot = ((_h = (_g = (_f = (_e = M == null ? void 0 : M[1]) == null ? void 0 : _e[0]) == null ? void 0 : _f.meta) == null ? void 0 : _g[1]) == null ? void 0 : _h[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];
var docroot = ((_g = (_f = (_e = (_d = M == null ? void 0 : M[1]) == null ? void 0 : _d[0]) == null ? void 0 : _e.meta) == null ? void 0 : _f[1]) == null ? void 0 : _g[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];
if (!docroot)
indices.forEach(function(idx) {
M[idx].forEach(function(iwam) {
@ -1037,8 +1092,23 @@ function parse_numbers_iwa(cfb, opts) {
throw new Error("Cannot find Document root");
return parse_TN_DocumentArchive(M, docroot, opts);
}
function write_tile_row(tri, data, SST, wide) {
function write_TST_TileRowInfo(data, SST, wide) {
var _a, _b;
var tri = [
[],
[{ type: 0, data: write_varint49(0) }],
[{ type: 0, data: write_varint49(0) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(5) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(1) }]
];
if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))
throw "Mutation only works on post-BNC storages!";
var cnt = 0;
@ -1078,6 +1148,11 @@ function write_tile_row(tri, data, SST, wide) {
_celload = write_old_storage({ t: "b", v: data[C] }, SST);
break;
default:
if (data[C] instanceof Date) {
celload = write_new_storage({ t: "s", v: data[C].toISOString() }, SST);
_celload = write_old_storage({ t: "s", v: data[C].toISOString() }, SST);
break;
}
throw new Error("Unsupported value " + data[C]);
}
cell_storage.push(celload);
@ -1097,7 +1172,7 @@ function write_tile_row(tri, data, SST, wide) {
tri[6][0].data = u8concat(cell_storage);
tri[3][0].data = u8concat(_cell_storage);
tri[8] = [{ type: 0, data: write_varint49(wide ? 1 : 0) }];
return cnt;
return tri;
}
function write_iwam(type, payload) {
return {
@ -1165,19 +1240,20 @@ function write_numbers_iwa(wb, opts) {
if (!opts || !opts.numbers)
throw new Error("Must pass a `numbers` option -- check the README");
var cfb = CFB.read(opts.numbers, { type: "base64" });
var dependents = build_numbers_deps(cfb);
var cfb_DA = CFB.find(cfb, dependents[1].location);
if (!cfb_DA)
throw "Could not find ".concat(dependents[1].location, " in Numbers template");
var iwa_DA = parse_iwa_file(decompress_iwa_file(cfb_DA.content));
var docroot = iwa_DA.find(function(packet) {
return packet.id == 1;
});
var deps = build_numbers_deps(cfb);
var docroot = numbers_iwa_find(cfb, deps, 1);
if (docroot == null)
throw "Could not find message ".concat(1, " in Numbers template");
var sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);
if (sheetrefs.length > 1)
throw new Error("Template NUMBERS file must have exactly one sheet");
wb.SheetNames.forEach(function(name, idx) {
return write_numbers_ws(cfb, dependents, wb.Sheets[name], name, idx, sheetrefs[idx]);
if (idx >= 1) {
numbers_add_ws(cfb, deps, idx + 1);
docroot = numbers_iwa_find(cfb, deps, 1);
sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);
}
write_numbers_ws(cfb, deps, wb.Sheets[name], name, idx, sheetrefs[idx]);
});
return cfb;
}
@ -1203,9 +1279,364 @@ function numbers_iwa_find(cfb, deps, id) {
});
return ainfo;
}
function numbers_add_ws(cfb, deps, wsidx) {
var sheetref = -1, newsheetref = -1;
var remap = {};
numbers_iwa_doit(cfb, deps, 1, function(docroot, arch) {
var doc = parse_shallow(docroot.messages[0].data);
sheetref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);
newsheetref = get_unique_msgid({ deps: [1], location: deps[sheetref].location, type: 2 }, deps);
remap[sheetref] = newsheetref;
numbers_add_oref(docroot, newsheetref);
doc[1].push({ type: 2, data: write_TSP_Reference(newsheetref) });
var sheet = numbers_iwa_find(cfb, deps, sheetref);
sheet.id = newsheetref;
if (deps[1].location == deps[newsheetref].location)
arch.push(sheet);
else
numbers_iwa_doit(cfb, deps, newsheetref, function(_, x) {
return x.push(sheet);
});
docroot.messages[0].data = write_shallow(doc);
});
var tiaref = -1;
numbers_iwa_doit(cfb, deps, newsheetref, function(sheetroot, arch) {
var sa = parse_shallow(sheetroot.messages[0].data);
for (var i = 3; i <= 69; ++i)
delete sa[i];
var drawables = mappa(sa[2], parse_TSP_Reference);
drawables.forEach(function(n) {
return numbers_del_oref(sheetroot, n);
});
tiaref = get_unique_msgid({ deps: [newsheetref], location: deps[drawables[0]].location, type: deps[drawables[0]].type }, deps);
numbers_add_oref(sheetroot, tiaref);
remap[drawables[0]] = tiaref;
sa[2] = [{ type: 2, data: write_TSP_Reference(tiaref) }];
var tia = numbers_iwa_find(cfb, deps, drawables[0]);
tia.id = tiaref;
if (deps[drawables[0]].location == deps[newsheetref].location)
arch.push(tia);
else {
var loc2 = deps[newsheetref].location;
loc2 = loc2.replace(/^Root Entry\//, "");
loc2 = loc2.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
var parentidx = mlist[3].findIndex(function(m) {
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc2;
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc2)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(tiaref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
numbers_iwa_doit(cfb, deps, tiaref, function(_, x) {
return x.push(tia);
});
}
sheetroot.messages[0].data = write_shallow(sa);
});
var tmaref = -1;
numbers_iwa_doit(cfb, deps, tiaref, function(tiaroot, arch) {
var tia = parse_shallow(tiaroot.messages[0].data);
var da = parse_shallow(tia[1][0].data);
for (var i = 3; i <= 69; ++i)
delete da[i];
var dap = parse_TSP_Reference(da[2][0].data);
da[2][0].data = write_TSP_Reference(remap[dap]);
tia[1][0].data = write_shallow(da);
var oldtmaref = parse_TSP_Reference(tia[2][0].data);
numbers_del_oref(tiaroot, oldtmaref);
tmaref = get_unique_msgid({ deps: [tiaref], location: deps[oldtmaref].location, type: deps[oldtmaref].type }, deps);
numbers_add_oref(tiaroot, tmaref);
remap[oldtmaref] = tmaref;
tia[2][0].data = write_TSP_Reference(tmaref);
var tma = numbers_iwa_find(cfb, deps, oldtmaref);
tma.id = tmaref;
if (deps[tiaref].location == deps[tmaref].location)
arch.push(tma);
else
numbers_iwa_doit(cfb, deps, tmaref, function(_, x) {
return x.push(tma);
});
tiaroot.messages[0].data = write_shallow(tia);
});
var loc = deps[tmaref].location;
loc = loc.replace(/^Root Entry\//, "");
loc = loc.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, tmaref, function(tmaroot, arch) {
var _a, _b;
var tma = parse_shallow(tmaroot.messages[0].data);
var uuid = u8str(tma[1][0].data), new_uuid = uuid.replace(/-[A-Z0-9]*/, "-".concat(wsidx.toString(16).padStart(4, "0")));
tma[1][0].data = stru8(new_uuid);
[12, 13, 29, 31, 32, 33, 39, 44, 47, 81, 82, 84].forEach(function(n) {
return delete tma[n];
});
if (tma[45]) {
var srrta = parse_shallow(tma[45][0].data);
var ref = parse_TSP_Reference(srrta[1][0].data);
numbers_del_oref(tmaroot, ref);
delete tma[45];
}
if (tma[70]) {
var hsoa = parse_shallow(tma[70][0].data);
(_a = hsoa[2]) == null ? void 0 : _a.forEach(function(item) {
var hsa = parse_shallow(item.data);
[2, 3].map(function(n) {
return hsa[n][0];
}).forEach(function(hseadata) {
var hsea = parse_shallow(hseadata.data);
if (!hsea[8])
return;
var ref2 = parse_TSP_Reference(hsea[8][0].data);
numbers_del_oref(tmaroot, ref2);
});
});
delete tma[70];
}
[
46,
30,
34,
35,
36,
38,
48,
49,
60,
61,
62,
63,
64,
71,
72,
73,
74,
75,
85,
86,
87,
88,
89
].forEach(function(n) {
if (!tma[n])
return;
var ref2 = parse_TSP_Reference(tma[n][0].data);
delete tma[n];
numbers_del_oref(tmaroot, ref2);
});
var store = parse_shallow(tma[4][0].data);
{
[2, 4, 5, 6, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22].forEach(function(n) {
var _a2;
if (!((_a2 = store[n]) == null ? void 0 : _a2[0]))
return;
var oldref = parse_TSP_Reference(store[n][0].data);
var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);
numbers_del_oref(tmaroot, oldref);
numbers_add_oref(tmaroot, newref);
remap[oldref] = newref;
var msg = numbers_iwa_find(cfb, deps, oldref);
msg.id = newref;
if (deps[oldref].location == deps[tmaref].location)
arch.push(msg);
else {
deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());
if (deps[newref].location == deps[oldref].location)
deps[newref].location = deps[newref].location.replace(/\.iwa/, "-".concat(newref, ".iwa"));
CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));
var newloc = deps[newref].location;
newloc = newloc.replace(/^Root Entry\//, "");
newloc = newloc.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
mlist[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }],
[{ type: 2, data: stru8(newloc.replace(/-.*$/, "")) }],
[{ type: 2, data: stru8(newloc) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[],
[],
[],
[],
[{ type: 0, data: write_varint49(0) }],
[],
[{ type: 0, data: write_varint49(0) }]
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a3, _b2;
var mm = parse_shallow(m.data);
if ((_a3 = mm[3]) == null ? void 0 : _a3[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
}
store[n][0].data = write_TSP_Reference(newref);
});
var row_headers = parse_shallow(store[1][0].data);
{
(_b = row_headers[2]) == null ? void 0 : _b.forEach(function(tspref) {
var oldref = parse_TSP_Reference(tspref.data);
var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);
numbers_del_oref(tmaroot, oldref);
numbers_add_oref(tmaroot, newref);
remap[oldref] = newref;
var msg = numbers_iwa_find(cfb, deps, oldref);
msg.id = newref;
if (deps[oldref].location == deps[tmaref].location) {
arch.push(msg);
} else {
deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());
if (deps[newref].location == deps[oldref].location)
deps[newref].location = deps[newref].location.replace(/\.iwa/, "-".concat(newref, ".iwa"));
CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));
var newloc = deps[newref].location;
newloc = newloc.replace(/^Root Entry\//, "");
newloc = newloc.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
mlist[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }],
[{ type: 2, data: stru8(newloc.replace(/-.*$/, "")) }],
[{ type: 2, data: stru8(newloc) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[],
[],
[],
[],
[{ type: 0, data: write_varint49(0) }],
[],
[{ type: 0, data: write_varint49(0) }]
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
}
tspref.data = write_TSP_Reference(newref);
});
}
store[1][0].data = write_shallow(row_headers);
var tiles = parse_shallow(store[3][0].data);
{
tiles[1].forEach(function(t) {
var tst = parse_shallow(t.data);
var oldtileref = parse_TSP_Reference(tst[2][0].data);
var newtileref = remap[oldtileref];
if (!remap[oldtileref]) {
newtileref = get_unique_msgid({ deps: [tmaref], location: "", type: deps[oldtileref].type }, deps);
deps[newtileref].location = "Root Entry/Index/Tables/Tile-".concat(newtileref, ".iwa");
remap[oldtileref] = newtileref;
var oldtile = numbers_iwa_find(cfb, deps, oldtileref);
oldtile.id = newtileref;
numbers_del_oref(tmaroot, oldtileref);
numbers_add_oref(tmaroot, newtileref);
CFB.utils.cfb_add(cfb, "/Index/Tables/Tile-".concat(newtileref, ".iwa"), compress_iwa_file(write_iwa_file([oldtile])));
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
mlist[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(newtileref) }],
[{ type: 2, data: stru8("Tables/Tile") }],
[{ type: 2, data: stru8("Tables/Tile-".concat(newtileref)) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[],
[],
[],
[],
[{ type: 0, data: write_varint49(0) }],
[],
[{ type: 0, data: write_varint49(0) }]
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileref + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(newtileref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
}
tst[2][0].data = write_TSP_Reference(newtileref);
t.data = write_shallow(tst);
});
}
store[3][0].data = write_shallow(tiles);
}
tma[4][0].data = write_shallow(store);
tmaroot.messages[0].data = write_shallow(tma);
});
}
function write_numbers_ws(cfb, deps, ws, wsname, sheetidx, rootref) {
if (sheetidx >= 1)
return console.error("The Numbers writer currently writes only the first table");
var drawables = [];
numbers_iwa_doit(cfb, deps, rootref, function(docroot) {
var sheetref = parse_shallow(docroot.messages[0].data);
@ -1223,7 +1654,6 @@ function write_numbers_ws(cfb, deps, ws, wsname, sheetidx, rootref) {
}
var USE_WIDE_ROWS = true;
function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
var _a, _b;
var range = decode_range(ws["!ref"]);
range.s.r = range.s.c = 0;
var trunc = false;
@ -1238,15 +1668,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
if (trunc)
console.error("Truncating to ".concat(encode_range(range)));
var data = sheet_to_json(ws, { range: range, header: 1 });
var SST = ["~Sh33tJ5~"], SST_set = new Set(SST);
data.forEach(function(row) {
return row.forEach(function(cell) {
if (typeof cell == "string" && !SST_set.has(cell)) {
SST.push(cell);
SST_set.add(cell);
}
});
});
var SST = ["~Sh33tJ5~"];
var loc = deps[tmaref].location;
loc = loc.replace(/^Root Entry\//, "");
loc = loc.replace(/^Index\//, "").replace(/\.iwa$/, "");
@ -1259,9 +1681,9 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
{
var row_header_ref = parse_TSP_Reference(parse_shallow(store[1][0].data)[2][0].data);
numbers_iwa_doit(cfb, deps, row_header_ref, function(rowhead, _x) {
var _a2;
var _a;
var base_bucket = parse_shallow(rowhead.messages[0].data);
if ((_a2 = base_bucket == null ? void 0 : base_bucket[2]) == null ? void 0 : _a2[0])
if ((_a = base_bucket == null ? void 0 : base_bucket[2]) == null ? void 0 : _a[0])
for (var R2 = 0; R2 < data.length; ++R2) {
var _bucket = parse_shallow(base_bucket[2][0].data);
_bucket[1][0].data = write_varint49(R2);
@ -1281,22 +1703,6 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
}
colhead.messages[0].data = write_shallow(base_bucket);
});
var sstref = parse_TSP_Reference(store[4][0].data);
numbers_iwa_doit(cfb, deps, sstref, function(sstroot) {
var sstdata = parse_shallow(sstroot.messages[0].data);
{
sstdata[3] = [];
SST.forEach(function(str, i) {
sstdata[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(i) }],
[{ type: 0, data: write_varint49(1) }],
[{ type: 2, data: stru8(str) }]
]) });
});
}
sstroot.messages[0].data = write_shallow(sstdata);
});
var rbtree = parse_shallow(store[9][0].data);
rbtree[1] = [];
var tilestore = parse_shallow(store[3][0].data);
@ -1304,25 +1710,27 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
var tstride = 256;
tilestore[2] = [{ type: 0, data: write_varint49(tstride) }];
var tileref = parse_TSP_Reference(parse_shallow(tilestore[1][0].data)[2][0].data);
var save_token = 0;
var save_token = function() {
var metadata = numbers_iwa_find(cfb, deps, 2);
var mlist = parse_shallow(metadata.messages[0].data);
var mlst = mlist[3].filter(function(m) {
return parse_varint49(parse_shallow(m.data)[1][0].data) == tileref;
});
return (mlst == null ? void 0 : mlst.length) ? parse_varint49(parse_shallow(mlst[0].data)[12][0].data) : 0;
}();
{
CFB.utils.cfb_del(cfb, deps[tileref].location);
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
var lst = mlist[3].filter(function(m) {
return parse_varint49(parse_shallow(m.data)[1][0].data) == tileref;
});
if (lst && lst.length > 0)
save_token = parse_varint49(parse_shallow(lst[0].data)[12][0].data);
mlist[3] = mlist[3].filter(function(m) {
return parse_varint49(parse_shallow(m.data)[1][0].data) != tileref;
});
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
@ -1335,6 +1743,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
numbers_del_oref(tmaroot, tileref);
}
tilestore[1] = [];
var ntiles = Math.ceil((range.e.r + 1) / tstride);
@ -1357,22 +1766,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
[{ type: 0, data: write_varint49(USE_WIDE_ROWS ? 1 : 0) }]
];
for (var R = tidx * tstride; R <= Math.min(range.e.r, (tidx + 1) * tstride - 1); ++R) {
var tilerow = [
[],
[{ type: 0, data: write_varint49(0) }],
[{ type: 0, data: write_varint49(0) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(5) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(1) }]
];
write_tile_row(tilerow, data[R], SST, USE_WIDE_ROWS);
var tilerow = write_TST_TileRowInfo(data[R], SST, USE_WIDE_ROWS);
tilerow[1][0].data = write_varint49(R - tidx * tstride);
tiledata[5].push({ data: write_shallow(tilerow), type: 2 });
}
@ -1406,11 +1800,11 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileid + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
@ -1427,12 +1821,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
var orefs = ((_a = tmaroot.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(tmaroot.messages[0].meta[5][0].data) : [];
var orefidx = orefs.indexOf(newtileid);
if (orefidx == -1) {
orefs[orefidx = orefs.length] = newtileid;
tmaroot.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];
}
numbers_add_oref(tmaroot, newtileid);
rbtree[1].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(tidx * tstride) }],
@ -1472,11 +1861,11 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
@ -1493,14 +1882,27 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
orefs = ((_b = tmaroot.messages[0].meta[5]) == null ? void 0 : _b[0]) ? parse_packed_varints(tmaroot.messages[0].meta[5][0].data) : [];
orefidx = orefs.indexOf(mergeid);
if (orefidx == -1) {
orefs[orefidx = orefs.length] = mergeid;
tmaroot.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];
}
numbers_add_oref(tmaroot, mergeid);
} else
delete store[13];
var sstref = parse_TSP_Reference(store[4][0].data);
numbers_iwa_doit(cfb, deps, sstref, function(sstroot) {
var sstdata = parse_shallow(sstroot.messages[0].data);
{
sstdata[3] = [];
SST.forEach(function(str, i) {
if (i == 0)
return;
sstdata[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(i) }],
[{ type: 0, data: write_varint49(1) }],
[{ type: 2, data: stru8(str) }]
]) });
});
}
sstroot.messages[0].data = write_shallow(sstdata);
});
}
pb[4][0].data = write_shallow(store);
}

@ -169,6 +169,39 @@ function varint_to_i32(buf) {
}
return i32;
}
function varint_to_u64(buf) {
var l = 0, lo = buf[l] & 127, hi = 0;
varint:
if (buf[l++] >= 128) {
lo |= (buf[l] & 127) << 7;
if (buf[l++] < 128)
break varint;
lo |= (buf[l] & 127) << 14;
if (buf[l++] < 128)
break varint;
lo |= (buf[l] & 127) << 21;
if (buf[l++] < 128)
break varint;
lo |= (buf[l] & 127) << 28;
hi = buf[l] >> 4 & 7;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 3;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 10;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 17;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 24;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 31;
}
return [lo >>> 0, hi >>> 0];
}
function parse_shallow(buf) {
var out = [], ptr = [0];
while (ptr[0] < buf.length) {
@ -705,10 +738,12 @@ function write_new_storage(cell, sst) {
l += 8;
break;
case "s":
if (sst.indexOf(cell.v) == -1)
throw new Error("Value ".concat(cell.v, " missing from SST!"));
var s = cell.v == null ? "" : String(cell.v);
var isst = sst.indexOf(s);
if (isst == -1)
sst[isst = sst.length] = s;
out[1] = 3;
dv.setUint32(l, sst.indexOf(cell.v), true);
dv.setUint32(l, isst, true);
flags |= 8;
l += 4;
break;
@ -735,10 +770,12 @@ function write_old_storage(cell, sst) {
l += 8;
break;
case "s":
if (sst.indexOf(cell.v) == -1)
throw new Error("Value ".concat(cell.v, " missing from SST!"));
var s = cell.v == null ? "" : String(cell.v);
var isst = sst.indexOf(s);
if (isst == -1)
sst[isst = sst.length] = s;
out[2] = 3;
dv.setUint32(l, sst.indexOf(cell.v), true);
dv.setUint32(l, isst, true);
flags |= 16;
l += 4;
break;
@ -772,6 +809,22 @@ function write_TSP_Reference(idx) {
[{ type: 0, data: write_varint49(idx) }]
]);
}
function numbers_add_oref(iwa, ref) {
var _a;
var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];
var orefidx = orefs.indexOf(ref);
if (orefidx == -1) {
orefs.push(ref);
iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];
}
}
function numbers_del_oref(iwa, ref) {
var _a;
var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];
iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs.filter(function(r) {
return r != ref;
})) }];
}
function parse_TST_TableDataList(M, root) {
var pb = parse_shallow(root.data);
var type = varint_to_i32(pb[1][0].data);
@ -779,6 +832,8 @@ function parse_TST_TableDataList(M, root) {
var data = [];
(entries || []).forEach(function(entry) {
var le = parse_shallow(entry.data);
if (!le[1])
return;
var key = varint_to_i32(le[1][0].data) >>> 0;
switch (type) {
case 1:
@ -988,7 +1043,7 @@ function parse_TN_DocumentArchive(M, root, opts) {
return out;
}
function parse_numbers_iwa(cfb, opts) {
var _a, _b, _c, _d, _e, _f, _g, _h;
var _a, _b, _c, _d, _e, _f, _g;
var M = {}, indices = [];
cfb.FullPaths.forEach(function(p) {
if (p.match(/\.iwpv2/))
@ -1018,9 +1073,9 @@ function parse_numbers_iwa(cfb, opts) {
});
if (!indices.length)
throw new Error("File has no messages");
if (((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1e4)
if (((_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0].meta) == null ? void 0 : _b[1]) == null ? void 0 : _c[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1e4)
throw new Error("Pages documents are not supported");
var docroot = ((_h = (_g = (_f = (_e = M == null ? void 0 : M[1]) == null ? void 0 : _e[0]) == null ? void 0 : _f.meta) == null ? void 0 : _g[1]) == null ? void 0 : _h[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];
var docroot = ((_g = (_f = (_e = (_d = M == null ? void 0 : M[1]) == null ? void 0 : _d[0]) == null ? void 0 : _e.meta) == null ? void 0 : _f[1]) == null ? void 0 : _g[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];
if (!docroot)
indices.forEach(function(idx) {
M[idx].forEach(function(iwam) {
@ -1037,8 +1092,23 @@ function parse_numbers_iwa(cfb, opts) {
throw new Error("Cannot find Document root");
return parse_TN_DocumentArchive(M, docroot, opts);
}
function write_tile_row(tri, data, SST, wide) {
function write_TST_TileRowInfo(data, SST, wide) {
var _a, _b;
var tri = [
[],
[{ type: 0, data: write_varint49(0) }],
[{ type: 0, data: write_varint49(0) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(5) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(1) }]
];
if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))
throw "Mutation only works on post-BNC storages!";
var cnt = 0;
@ -1078,6 +1148,11 @@ function write_tile_row(tri, data, SST, wide) {
_celload = write_old_storage({ t: "b", v: data[C] }, SST);
break;
default:
if (data[C] instanceof Date) {
celload = write_new_storage({ t: "s", v: data[C].toISOString() }, SST);
_celload = write_old_storage({ t: "s", v: data[C].toISOString() }, SST);
break;
}
throw new Error("Unsupported value " + data[C]);
}
cell_storage.push(celload);
@ -1097,7 +1172,7 @@ function write_tile_row(tri, data, SST, wide) {
tri[6][0].data = u8concat(cell_storage);
tri[3][0].data = u8concat(_cell_storage);
tri[8] = [{ type: 0, data: write_varint49(wide ? 1 : 0) }];
return cnt;
return tri;
}
function write_iwam(type, payload) {
return {
@ -1165,19 +1240,20 @@ function write_numbers_iwa(wb, opts) {
if (!opts || !opts.numbers)
throw new Error("Must pass a `numbers` option -- check the README");
var cfb = CFB.read(opts.numbers, { type: "base64" });
var dependents = build_numbers_deps(cfb);
var cfb_DA = CFB.find(cfb, dependents[1].location);
if (!cfb_DA)
throw "Could not find ".concat(dependents[1].location, " in Numbers template");
var iwa_DA = parse_iwa_file(decompress_iwa_file(cfb_DA.content));
var docroot = iwa_DA.find(function(packet) {
return packet.id == 1;
});
var deps = build_numbers_deps(cfb);
var docroot = numbers_iwa_find(cfb, deps, 1);
if (docroot == null)
throw "Could not find message ".concat(1, " in Numbers template");
var sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);
if (sheetrefs.length > 1)
throw new Error("Template NUMBERS file must have exactly one sheet");
wb.SheetNames.forEach(function(name, idx) {
return write_numbers_ws(cfb, dependents, wb.Sheets[name], name, idx, sheetrefs[idx]);
if (idx >= 1) {
numbers_add_ws(cfb, deps, idx + 1);
docroot = numbers_iwa_find(cfb, deps, 1);
sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);
}
write_numbers_ws(cfb, deps, wb.Sheets[name], name, idx, sheetrefs[idx]);
});
return cfb;
}
@ -1203,9 +1279,364 @@ function numbers_iwa_find(cfb, deps, id) {
});
return ainfo;
}
function numbers_add_ws(cfb, deps, wsidx) {
var sheetref = -1, newsheetref = -1;
var remap = {};
numbers_iwa_doit(cfb, deps, 1, function(docroot, arch) {
var doc = parse_shallow(docroot.messages[0].data);
sheetref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);
newsheetref = get_unique_msgid({ deps: [1], location: deps[sheetref].location, type: 2 }, deps);
remap[sheetref] = newsheetref;
numbers_add_oref(docroot, newsheetref);
doc[1].push({ type: 2, data: write_TSP_Reference(newsheetref) });
var sheet = numbers_iwa_find(cfb, deps, sheetref);
sheet.id = newsheetref;
if (deps[1].location == deps[newsheetref].location)
arch.push(sheet);
else
numbers_iwa_doit(cfb, deps, newsheetref, function(_, x) {
return x.push(sheet);
});
docroot.messages[0].data = write_shallow(doc);
});
var tiaref = -1;
numbers_iwa_doit(cfb, deps, newsheetref, function(sheetroot, arch) {
var sa = parse_shallow(sheetroot.messages[0].data);
for (var i = 3; i <= 69; ++i)
delete sa[i];
var drawables = mappa(sa[2], parse_TSP_Reference);
drawables.forEach(function(n) {
return numbers_del_oref(sheetroot, n);
});
tiaref = get_unique_msgid({ deps: [newsheetref], location: deps[drawables[0]].location, type: deps[drawables[0]].type }, deps);
numbers_add_oref(sheetroot, tiaref);
remap[drawables[0]] = tiaref;
sa[2] = [{ type: 2, data: write_TSP_Reference(tiaref) }];
var tia = numbers_iwa_find(cfb, deps, drawables[0]);
tia.id = tiaref;
if (deps[drawables[0]].location == deps[newsheetref].location)
arch.push(tia);
else {
var loc2 = deps[newsheetref].location;
loc2 = loc2.replace(/^Root Entry\//, "");
loc2 = loc2.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
var parentidx = mlist[3].findIndex(function(m) {
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc2;
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc2)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(tiaref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
numbers_iwa_doit(cfb, deps, tiaref, function(_, x) {
return x.push(tia);
});
}
sheetroot.messages[0].data = write_shallow(sa);
});
var tmaref = -1;
numbers_iwa_doit(cfb, deps, tiaref, function(tiaroot, arch) {
var tia = parse_shallow(tiaroot.messages[0].data);
var da = parse_shallow(tia[1][0].data);
for (var i = 3; i <= 69; ++i)
delete da[i];
var dap = parse_TSP_Reference(da[2][0].data);
da[2][0].data = write_TSP_Reference(remap[dap]);
tia[1][0].data = write_shallow(da);
var oldtmaref = parse_TSP_Reference(tia[2][0].data);
numbers_del_oref(tiaroot, oldtmaref);
tmaref = get_unique_msgid({ deps: [tiaref], location: deps[oldtmaref].location, type: deps[oldtmaref].type }, deps);
numbers_add_oref(tiaroot, tmaref);
remap[oldtmaref] = tmaref;
tia[2][0].data = write_TSP_Reference(tmaref);
var tma = numbers_iwa_find(cfb, deps, oldtmaref);
tma.id = tmaref;
if (deps[tiaref].location == deps[tmaref].location)
arch.push(tma);
else
numbers_iwa_doit(cfb, deps, tmaref, function(_, x) {
return x.push(tma);
});
tiaroot.messages[0].data = write_shallow(tia);
});
var loc = deps[tmaref].location;
loc = loc.replace(/^Root Entry\//, "");
loc = loc.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, tmaref, function(tmaroot, arch) {
var _a, _b;
var tma = parse_shallow(tmaroot.messages[0].data);
var uuid = u8str(tma[1][0].data), new_uuid = uuid.replace(/-[A-Z0-9]*/, "-".concat(wsidx.toString(16).padStart(4, "0")));
tma[1][0].data = stru8(new_uuid);
[12, 13, 29, 31, 32, 33, 39, 44, 47, 81, 82, 84].forEach(function(n) {
return delete tma[n];
});
if (tma[45]) {
var srrta = parse_shallow(tma[45][0].data);
var ref = parse_TSP_Reference(srrta[1][0].data);
numbers_del_oref(tmaroot, ref);
delete tma[45];
}
if (tma[70]) {
var hsoa = parse_shallow(tma[70][0].data);
(_a = hsoa[2]) == null ? void 0 : _a.forEach(function(item) {
var hsa = parse_shallow(item.data);
[2, 3].map(function(n) {
return hsa[n][0];
}).forEach(function(hseadata) {
var hsea = parse_shallow(hseadata.data);
if (!hsea[8])
return;
var ref2 = parse_TSP_Reference(hsea[8][0].data);
numbers_del_oref(tmaroot, ref2);
});
});
delete tma[70];
}
[
46,
30,
34,
35,
36,
38,
48,
49,
60,
61,
62,
63,
64,
71,
72,
73,
74,
75,
85,
86,
87,
88,
89
].forEach(function(n) {
if (!tma[n])
return;
var ref2 = parse_TSP_Reference(tma[n][0].data);
delete tma[n];
numbers_del_oref(tmaroot, ref2);
});
var store = parse_shallow(tma[4][0].data);
{
[2, 4, 5, 6, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22].forEach(function(n) {
var _a2;
if (!((_a2 = store[n]) == null ? void 0 : _a2[0]))
return;
var oldref = parse_TSP_Reference(store[n][0].data);
var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);
numbers_del_oref(tmaroot, oldref);
numbers_add_oref(tmaroot, newref);
remap[oldref] = newref;
var msg = numbers_iwa_find(cfb, deps, oldref);
msg.id = newref;
if (deps[oldref].location == deps[tmaref].location)
arch.push(msg);
else {
deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());
if (deps[newref].location == deps[oldref].location)
deps[newref].location = deps[newref].location.replace(/\.iwa/, "-".concat(newref, ".iwa"));
CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));
var newloc = deps[newref].location;
newloc = newloc.replace(/^Root Entry\//, "");
newloc = newloc.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
mlist[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }],
[{ type: 2, data: stru8(newloc.replace(/-.*$/, "")) }],
[{ type: 2, data: stru8(newloc) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[],
[],
[],
[],
[{ type: 0, data: write_varint49(0) }],
[],
[{ type: 0, data: write_varint49(0) }]
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a3, _b2;
var mm = parse_shallow(m.data);
if ((_a3 = mm[3]) == null ? void 0 : _a3[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
}
store[n][0].data = write_TSP_Reference(newref);
});
var row_headers = parse_shallow(store[1][0].data);
{
(_b = row_headers[2]) == null ? void 0 : _b.forEach(function(tspref) {
var oldref = parse_TSP_Reference(tspref.data);
var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);
numbers_del_oref(tmaroot, oldref);
numbers_add_oref(tmaroot, newref);
remap[oldref] = newref;
var msg = numbers_iwa_find(cfb, deps, oldref);
msg.id = newref;
if (deps[oldref].location == deps[tmaref].location) {
arch.push(msg);
} else {
deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());
if (deps[newref].location == deps[oldref].location)
deps[newref].location = deps[newref].location.replace(/\.iwa/, "-".concat(newref, ".iwa"));
CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));
var newloc = deps[newref].location;
newloc = newloc.replace(/^Root Entry\//, "");
newloc = newloc.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
mlist[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }],
[{ type: 2, data: stru8(newloc.replace(/-.*$/, "")) }],
[{ type: 2, data: stru8(newloc) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[],
[],
[],
[],
[{ type: 0, data: write_varint49(0) }],
[],
[{ type: 0, data: write_varint49(0) }]
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
}
tspref.data = write_TSP_Reference(newref);
});
}
store[1][0].data = write_shallow(row_headers);
var tiles = parse_shallow(store[3][0].data);
{
tiles[1].forEach(function(t) {
var tst = parse_shallow(t.data);
var oldtileref = parse_TSP_Reference(tst[2][0].data);
var newtileref = remap[oldtileref];
if (!remap[oldtileref]) {
newtileref = get_unique_msgid({ deps: [tmaref], location: "", type: deps[oldtileref].type }, deps);
deps[newtileref].location = "Root Entry/Index/Tables/Tile-".concat(newtileref, ".iwa");
remap[oldtileref] = newtileref;
var oldtile = numbers_iwa_find(cfb, deps, oldtileref);
oldtile.id = newtileref;
numbers_del_oref(tmaroot, oldtileref);
numbers_add_oref(tmaroot, newtileref);
CFB.utils.cfb_add(cfb, "/Index/Tables/Tile-".concat(newtileref, ".iwa"), compress_iwa_file(write_iwa_file([oldtile])));
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
mlist[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(newtileref) }],
[{ type: 2, data: stru8("Tables/Tile") }],
[{ type: 2, data: stru8("Tables/Tile-".concat(newtileref)) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[],
[],
[],
[],
[{ type: 0, data: write_varint49(0) }],
[],
[{ type: 0, data: write_varint49(0) }]
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileref + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(newtileref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
}
tst[2][0].data = write_TSP_Reference(newtileref);
t.data = write_shallow(tst);
});
}
store[3][0].data = write_shallow(tiles);
}
tma[4][0].data = write_shallow(store);
tmaroot.messages[0].data = write_shallow(tma);
});
}
function write_numbers_ws(cfb, deps, ws, wsname, sheetidx, rootref) {
if (sheetidx >= 1)
return console.error("The Numbers writer currently writes only the first table");
var drawables = [];
numbers_iwa_doit(cfb, deps, rootref, function(docroot) {
var sheetref = parse_shallow(docroot.messages[0].data);
@ -1223,7 +1654,6 @@ function write_numbers_ws(cfb, deps, ws, wsname, sheetidx, rootref) {
}
var USE_WIDE_ROWS = true;
function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
var _a, _b;
var range = decode_range(ws["!ref"]);
range.s.r = range.s.c = 0;
var trunc = false;
@ -1238,15 +1668,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
if (trunc)
console.error("Truncating to ".concat(encode_range(range)));
var data = sheet_to_json(ws, { range: range, header: 1 });
var SST = ["~Sh33tJ5~"], SST_set = new Set(SST);
data.forEach(function(row) {
return row.forEach(function(cell) {
if (typeof cell == "string" && !SST_set.has(cell)) {
SST.push(cell);
SST_set.add(cell);
}
});
});
var SST = ["~Sh33tJ5~"];
var loc = deps[tmaref].location;
loc = loc.replace(/^Root Entry\//, "");
loc = loc.replace(/^Index\//, "").replace(/\.iwa$/, "");
@ -1259,9 +1681,9 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
{
var row_header_ref = parse_TSP_Reference(parse_shallow(store[1][0].data)[2][0].data);
numbers_iwa_doit(cfb, deps, row_header_ref, function(rowhead, _x) {
var _a2;
var _a;
var base_bucket = parse_shallow(rowhead.messages[0].data);
if ((_a2 = base_bucket == null ? void 0 : base_bucket[2]) == null ? void 0 : _a2[0])
if ((_a = base_bucket == null ? void 0 : base_bucket[2]) == null ? void 0 : _a[0])
for (var R2 = 0; R2 < data.length; ++R2) {
var _bucket = parse_shallow(base_bucket[2][0].data);
_bucket[1][0].data = write_varint49(R2);
@ -1281,22 +1703,6 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
}
colhead.messages[0].data = write_shallow(base_bucket);
});
var sstref = parse_TSP_Reference(store[4][0].data);
numbers_iwa_doit(cfb, deps, sstref, function(sstroot) {
var sstdata = parse_shallow(sstroot.messages[0].data);
{
sstdata[3] = [];
SST.forEach(function(str, i) {
sstdata[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(i) }],
[{ type: 0, data: write_varint49(1) }],
[{ type: 2, data: stru8(str) }]
]) });
});
}
sstroot.messages[0].data = write_shallow(sstdata);
});
var rbtree = parse_shallow(store[9][0].data);
rbtree[1] = [];
var tilestore = parse_shallow(store[3][0].data);
@ -1304,25 +1710,27 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
var tstride = 256;
tilestore[2] = [{ type: 0, data: write_varint49(tstride) }];
var tileref = parse_TSP_Reference(parse_shallow(tilestore[1][0].data)[2][0].data);
var save_token = 0;
var save_token = function() {
var metadata = numbers_iwa_find(cfb, deps, 2);
var mlist = parse_shallow(metadata.messages[0].data);
var mlst = mlist[3].filter(function(m) {
return parse_varint49(parse_shallow(m.data)[1][0].data) == tileref;
});
return (mlst == null ? void 0 : mlst.length) ? parse_varint49(parse_shallow(mlst[0].data)[12][0].data) : 0;
}();
{
CFB.utils.cfb_del(cfb, deps[tileref].location);
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
var lst = mlist[3].filter(function(m) {
return parse_varint49(parse_shallow(m.data)[1][0].data) == tileref;
});
if (lst && lst.length > 0)
save_token = parse_varint49(parse_shallow(lst[0].data)[12][0].data);
mlist[3] = mlist[3].filter(function(m) {
return parse_varint49(parse_shallow(m.data)[1][0].data) != tileref;
});
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
@ -1335,6 +1743,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
numbers_del_oref(tmaroot, tileref);
}
tilestore[1] = [];
var ntiles = Math.ceil((range.e.r + 1) / tstride);
@ -1357,22 +1766,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
[{ type: 0, data: write_varint49(USE_WIDE_ROWS ? 1 : 0) }]
];
for (var R = tidx * tstride; R <= Math.min(range.e.r, (tidx + 1) * tstride - 1); ++R) {
var tilerow = [
[],
[{ type: 0, data: write_varint49(0) }],
[{ type: 0, data: write_varint49(0) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(5) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(1) }]
];
write_tile_row(tilerow, data[R], SST, USE_WIDE_ROWS);
var tilerow = write_TST_TileRowInfo(data[R], SST, USE_WIDE_ROWS);
tilerow[1][0].data = write_varint49(R - tidx * tstride);
tiledata[5].push({ data: write_shallow(tilerow), type: 2 });
}
@ -1406,11 +1800,11 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileid + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
@ -1427,12 +1821,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
var orefs = ((_a = tmaroot.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(tmaroot.messages[0].meta[5][0].data) : [];
var orefidx = orefs.indexOf(newtileid);
if (orefidx == -1) {
orefs[orefidx = orefs.length] = newtileid;
tmaroot.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];
}
numbers_add_oref(tmaroot, newtileid);
rbtree[1].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(tidx * tstride) }],
@ -1472,11 +1861,11 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
@ -1493,14 +1882,27 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
orefs = ((_b = tmaroot.messages[0].meta[5]) == null ? void 0 : _b[0]) ? parse_packed_varints(tmaroot.messages[0].meta[5][0].data) : [];
orefidx = orefs.indexOf(mergeid);
if (orefidx == -1) {
orefs[orefidx = orefs.length] = mergeid;
tmaroot.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];
}
numbers_add_oref(tmaroot, mergeid);
} else
delete store[13];
var sstref = parse_TSP_Reference(store[4][0].data);
numbers_iwa_doit(cfb, deps, sstref, function(sstroot) {
var sstdata = parse_shallow(sstroot.messages[0].data);
{
sstdata[3] = [];
SST.forEach(function(str, i) {
if (i == 0)
return;
sstdata[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(i) }],
[{ type: 0, data: write_varint49(1) }],
[{ type: 2, data: stru8(str) }]
]) });
});
}
sstroot.messages[0].data = write_shallow(sstdata);
});
}
pb[4][0].data = write_shallow(store);
}

@ -573,8 +573,10 @@ function write_new_storage(cell: CellObject, sst: string[]): Uint8Array {
case "n": out[1] = 2; writeDecimal128LE(out, l, cell.v as number); flags |= 1; l += 16; break;
case "b": out[1] = 6; dv.setFloat64(l, cell.v ? 1 : 0, true); flags |= 2; l += 8; break;
case "s":
if(sst.indexOf(cell.v as string) == -1) throw new Error(`Value ${cell.v} missing from SST!`);
out[1] = 3; dv.setUint32(l, sst.indexOf(cell.v as string), true); flags |= 8; l += 4; break;
var s = cell.v == null ? "" : String(cell.v);
var isst = sst.indexOf(s);
if(isst == -1) sst[isst = sst.length] = s;
out[1] = 3; dv.setUint32(l, isst, true); flags |= 8; l += 4; break;
default: throw "unsupported cell type " + cell.t;
}
dv.setUint32(8, flags, true);
@ -588,8 +590,10 @@ function write_old_storage(cell: CellObject, sst: string[]): Uint8Array {
case "n": out[2] = 2; dv.setFloat64(l, cell.v as number, true); flags |= 0x20; l += 8; break;
case "b": out[2] = 6; dv.setFloat64(l, cell.v ? 1 : 0, true); flags |= 0x20; l += 8; break;
case "s":
if(sst.indexOf(cell.v as string) == -1) throw new Error(`Value ${cell.v} missing from SST!`);
out[2] = 3; dv.setUint32(l, sst.indexOf(cell.v as string), true); flags |= 0x10; l += 4; break;
var s = cell.v == null ? "" : String(cell.v);
var isst = sst.indexOf(s);
if(isst == -1) sst[isst = sst.length] = s;
out[2] = 3; dv.setUint32(l, isst, true); flags |= 0x10; l += 4; break;
default: throw "unsupported cell type " + cell.t;
}
dv.setUint32(8, flags, true);
@ -957,7 +961,14 @@ function write_TST_TileRowInfo(data: any[], SST: string[], wide: boolean): Proto
celload = write_new_storage({t: "b", v: data[C]}, SST);
/*if(!wide)*/ _celload = write_old_storage({t: "b", v: data[C]}, SST);
break;
default: throw new Error("Unsupported value " + data[C]);
default:
// TODO: write the actual date code
if(data[C] instanceof Date) {
celload = write_new_storage({t: "s", v: (data[C] as Date).toISOString()}, SST);
/*if(!wide)*/ _celload = write_old_storage({t: "s", v: (data[C] as Date).toISOString()}, SST);
break;
}
throw new Error("Unsupported value " + data[C]);
}
cell_storage.push(celload); last_offset += celload.length;
/*if(!wide)*/ { _cell_storage.push(_celload); _last_offset += _celload.length; }
@ -1491,8 +1502,7 @@ function write_numbers_tma(cfb: CFB$Container, deps: Dependents, ws: WorkSheet,
/* preprocess data and build up shared string table */
var data = sheet_to_json<any>(ws, { range, header: 1 });
var SST = ["~Sh33tJ5~"], SST_set = new Set(SST);
data.forEach(row => row.forEach(cell => { if(typeof cell == "string" && !SST_set.has(cell)) { SST.push(cell); SST_set.add(cell); } }));
var SST = ["~Sh33tJ5~"];
/* identifier for finding the TableModelArchive in the archive */
var loc = deps[tmaref].location;
@ -1536,24 +1546,6 @@ function write_numbers_tma(cfb: CFB$Container, deps: Dependents, ws: WorkSheet,
colhead.messages[0].data = write_shallow(base_bucket);
});
/* rebuild shared string table */
var sstref = parse_TSP_Reference(store[4][0].data);
numbers_iwa_doit(cfb, deps, sstref, (sstroot) => {
var sstdata = parse_shallow(sstroot.messages[0].data);
{
sstdata[3] = [];
SST.forEach((str, i) => {
if(i == 0) return; // Numbers will assert if index zero
sstdata[3].push({type: 2, data: write_shallow([ [],
[ { type: 0, data: write_varint49(i) } ],
[ { type: 0, data: write_varint49(1) } ],
[ { type: 2, data: stru8(str) } ]
])});
});
}
sstroot.messages[0].data = write_shallow(sstdata);
});
var rbtree = parse_shallow(store[9][0].data);
rbtree[1] = [];
@ -1758,6 +1750,24 @@ function write_numbers_tma(cfb: CFB$Container, deps: Dependents, ws: WorkSheet,
} else delete store[13]; // TODO: delete references to merge if not needed
/* rebuild shared string table */
var sstref = parse_TSP_Reference(store[4][0].data);
numbers_iwa_doit(cfb, deps, sstref, (sstroot) => {
var sstdata = parse_shallow(sstroot.messages[0].data);
{
sstdata[3] = [];
SST.forEach((str, i) => {
if(i == 0) return; // Numbers will assert if index zero
sstdata[3].push({type: 2, data: write_shallow([ [],
[ { type: 0, data: write_varint49(i) } ],
[ { type: 0, data: write_varint49(1) } ],
[ { type: 2, data: stru8(str) } ]
])});
});
}
sstroot.messages[0].data = write_shallow(sstdata);
});
}
pb[4][0].data = write_shallow(store);
}

35
test.js

@ -13,10 +13,8 @@ declare var before:(test:EmptyFunc)=>void;
declare var afterEach:(test:EmptyFunc)=>void;
declare var cptable: any;
*/
var X, XLSX_ZAHL;
var modp = './';
var X = require("./"), XLSX_ZAHL = require("./dist/xlsx.zahl");
var fs = require('fs'), assert = require('assert');
describe('source',function(){it('should load',function(){X=require(modp);});});
var DIF_XL = true;
var browser = typeof document !== 'undefined';
@ -398,11 +396,6 @@ function check_comments(wb) {
describe('parse options', function() {
var html_cell_types = ['s'];
var bef = (function() {
X = require(modp);
});
if(typeof before != 'undefined') before(bef);
else it('before', bef);
describe('cell', function() {
it('XLSX should generate HTML by default', function() {
var wb = X.read(fs.readFileSync(paths.cstxlsx), {type:TYPE});
@ -750,7 +743,6 @@ describe('output formats', function() {
["prn", false, true]
];
function RT(T) {
if(!X) X = require(modp);
fmts.forEach(function(fmt) {
var wb = X.utils.book_new();
X.utils.book_append_sheet(wb, X.utils.aoa_to_sheet([['R',"\u2603"],["\u0BEE",2]]), "Sheet1");
@ -929,7 +921,6 @@ describe('parse features', function() {
describe('comments', function() {
if(fs.existsSync(paths.swcxlsx)) it('should have comment as part of cell properties', function(){
X = require(modp);
var sheet = 'Sheet1';
var wb1=X.read(fs.readFileSync(paths.swcxlsx), {type:TYPE});
var wb2=X.read(fs.readFileSync(paths.swcxlsb), {type:TYPE});
@ -1034,7 +1025,6 @@ describe('parse features', function() {
describe('column properties', function() {
var wbs = [], wbs_no_slk = [];
var bef = (function() {
X = require(modp);
wbs = CWPaths.map(function(n) { return X.read(fs.readFileSync(n), {type:TYPE, cellStyles:true}); });
wbs_no_slk = wbs.slice(0, 5);
});
@ -1077,7 +1067,6 @@ describe('parse features', function() {
var wbs = [], ols = [];
var ol = fs.existsSync(paths.olxls);
var bef = (function() {
X = require(modp);
wbs = RHPaths.map(function(p) { return X.read(fs.readFileSync(p), {type:TYPE, cellStyles:true}); });
/* */
if(!ol) return;
@ -1123,7 +1112,6 @@ describe('parse features', function() {
describe('merge cells',function() {
var wbs=[];
var bef = (function() {
X = require(modp);
wbs = MCPaths.map(function(p) { return X.read(fs.readFileSync(p), {type:TYPE}); });
});
if(typeof before != 'undefined') before(bef);
@ -1142,7 +1130,6 @@ describe('parse features', function() {
describe('should find hyperlinks', function() {
var wb1, wb2;
var bef = (function() {
X = require(modp);
wb1 = HLPaths.map(function(p) { return X.read(fs.readFileSync(p), {type:TYPE, WTF:true}); });
wb2 = ILPaths.map(function(p) { return X.read(fs.readFileSync(p), {type:TYPE, WTF:true}); });
});
@ -1454,7 +1441,6 @@ describe('parse features', function() {
// TODO: keep in sync with BookType, support other formats
"xlsx"/*, "xlsm" */, "xlsb"/* xls / xla / biff# */, "xlml", "ods", "fods"/*, "csv", "txt", */, "sylk", "html", "dif", "rtf"/*, "prn", "eth"*/, "dbf", "numbers"
].forEach(function(r) {
if(!XLSX_ZAHL) XLSX_ZAHL=require("./dist/xlsx.zahl");
if(r == "numbers" && !can_write_numbers) return;
var ws = X.utils.aoa_to_sheet([ ["a", "b", "c"], [1, 2, 3] ]);
var wb = X.utils.book_new(); X.utils.book_append_sheet(wb, ws, "Sheet1");
@ -1483,7 +1469,6 @@ describe('write features', function() {
};
var ws;
var bef = (function() {
X = require(modp);
ws = X.utils.aoa_to_sheet([["a","b","c"],[1,2,3]]);
});
if(typeof before != 'undefined') before(bef);
@ -1561,6 +1546,21 @@ describe('write features', function() {
assert.equal(Name.Ref, "Sheet1!$A$1:$C$3");
assert.equal(wb2.Workbook.Names.length, wb3.Workbook.Names.length);
}); });
it('should handle non-string values for "s" cells', function() {[
"xlsx", "xlsb", "xls", "biff5", "biff2", "xlml", "numbers", "ods", "fods", "wk3", "csv", "txt", "sylk", "html", "dif", "dbf", "wk1", "rtf", "prn"
].forEach(function(fmt) {
var ws = X.utils.aoa_to_sheet([
["String", "123"],
["Number", 123],
["Boolean", true],
["Date", new Date()],
], { cellDates: true });
ws["B2"].t = ws["B3"].t = ws["B4"].t = "s"
var wb = X.utils.book_new();
X.utils.book_append_sheet(wb, ws, "Sheet1");
X.write(wb, {type: TYPE, bookType: fmt, bookSST: false, numbers:XLSX_ZAHL});
X.write(wb, {type: TYPE, bookType: fmt, bookSST: true, numbers:XLSX_ZAHL});
}); });
});
function seq(end/*:number*/, start/*:?number*/)/*:Array<number>*/ {
@ -1597,9 +1597,6 @@ function parseDate(str/*:string|Date*/)/*:Date*/ {
var fixdate = browser ? parseDate("2014-02-19T14:30:00.000Z") : new Date("2014-02-19T14:30Z");
describe('roundtrip features', function() {
var bef = (function() { X = require(modp); XLSX_ZAHL=require("./dist/xlsx.zahl"); });
if(typeof before != 'undefined') before(bef);
else it('before', bef);
describe('should preserve core properties', function() { [
['xls', paths.cpxls],
['xlml', paths.cpxml],

38
tests/core.js generated

@ -13,10 +13,8 @@ declare var before:(test:EmptyFunc)=>void;
declare var afterEach:(test:EmptyFunc)=>void;
declare var cptable: any;
*/
var X, XLSX_ZAHL = XLSX_ZAHL_PAYLOAD;
var modp = './';
var X = require("./"), XLSX_ZAHL = require("./dist/xlsx.zahl");
var fs = require('fs'), assert = require('assert');
describe('source',function(){it('should load',function(){X=require(modp);});});
var DIF_XL = true;
var browser = typeof document !== 'undefined';
@ -27,7 +25,7 @@ var Buffer_from = /*::(*/function(){}/*:: :any)*/;
if(typeof Buffer !== 'undefined') {
var nbfs = !Buffer.from;
if(!nbfs) try { Buffer.from("foo", "utf8"); } catch(e) { nbfs = true; }
if(!nbfs) try { Buffer.from("foo", "utf-8"); } catch(e) { nbfs = true; }
Buffer_from = nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);
// $FlowIgnore
if(!Buffer.alloc) Buffer.alloc = function(n) { return new Buffer(n); };
@ -398,11 +396,6 @@ function check_comments(wb) {
describe('parse options', function() {
var html_cell_types = ['s'];
var bef = (function() {
X = require(modp);
});
if(typeof before != 'undefined') before(bef);
else it('before', bef);
describe('cell', function() {
it('XLSX should generate HTML by default', function() {
var wb = X.read(fs.readFileSync(paths.cstxlsx), {type:TYPE});
@ -750,7 +743,6 @@ describe('output formats', function() {
["prn", false, true]
];
function RT(T) {
if(!X) X = require(modp);
fmts.forEach(function(fmt) {
var wb = X.utils.book_new();
X.utils.book_append_sheet(wb, X.utils.aoa_to_sheet([['R',"\u2603"],["\u0BEE",2]]), "Sheet1");
@ -929,7 +921,6 @@ describe('parse features', function() {
describe('comments', function() {
if(fs.existsSync(paths.swcxlsx)) it('should have comment as part of cell properties', function(){
X = require(modp);
var sheet = 'Sheet1';
var wb1=X.read(fs.readFileSync(paths.swcxlsx), {type:TYPE});
var wb2=X.read(fs.readFileSync(paths.swcxlsb), {type:TYPE});
@ -1034,7 +1025,6 @@ describe('parse features', function() {
describe('column properties', function() {
var wbs = [], wbs_no_slk = [];
var bef = (function() {
X = require(modp);
wbs = CWPaths.map(function(n) { return X.read(fs.readFileSync(n), {type:TYPE, cellStyles:true}); });
wbs_no_slk = wbs.slice(0, 5);
});
@ -1077,7 +1067,6 @@ describe('parse features', function() {
var wbs = [], ols = [];
var ol = fs.existsSync(paths.olxls);
var bef = (function() {
X = require(modp);
wbs = RHPaths.map(function(p) { return X.read(fs.readFileSync(p), {type:TYPE, cellStyles:true}); });
/* */
if(!ol) return;
@ -1123,7 +1112,6 @@ describe('parse features', function() {
describe('merge cells',function() {
var wbs=[];
var bef = (function() {
X = require(modp);
wbs = MCPaths.map(function(p) { return X.read(fs.readFileSync(p), {type:TYPE}); });
});
if(typeof before != 'undefined') before(bef);
@ -1142,7 +1130,6 @@ describe('parse features', function() {
describe('should find hyperlinks', function() {
var wb1, wb2;
var bef = (function() {
X = require(modp);
wb1 = HLPaths.map(function(p) { return X.read(fs.readFileSync(p), {type:TYPE, WTF:true}); });
wb2 = ILPaths.map(function(p) { return X.read(fs.readFileSync(p), {type:TYPE, WTF:true}); });
});
@ -1482,7 +1469,6 @@ describe('write features', function() {
};
var ws;
var bef = (function() {
X = require(modp);
ws = X.utils.aoa_to_sheet([["a","b","c"],[1,2,3]]);
});
if(typeof before != 'undefined') before(bef);
@ -1560,6 +1546,21 @@ describe('write features', function() {
assert.equal(Name.Ref, "Sheet1!$A$1:$C$3");
assert.equal(wb2.Workbook.Names.length, wb3.Workbook.Names.length);
}); });
it('should handle non-string values for "s" cells', function() {[
"xlsx", "xlsb", "xls", "biff5", "biff2", "xlml", "numbers", "ods", "fods", "wk3", "csv", "txt", "sylk", "html", "dif", "dbf", "wk1", "rtf", "prn"
].forEach(function(fmt) {
var ws = X.utils.aoa_to_sheet([
["String", "123"],
["Number", 123],
["Boolean", true],
["Date", new Date()],
], { cellDates: true });
ws["B2"].t = ws["B3"].t = ws["B4"].t = "s"
var wb = X.utils.book_new();
X.utils.book_append_sheet(wb, ws, "Sheet1");
X.write(wb, {type: TYPE, bookType: fmt, bookSST: false, numbers:XLSX_ZAHL});
X.write(wb, {type: TYPE, bookType: fmt, bookSST: true, numbers:XLSX_ZAHL});
}); });
});
function seq(end/*:number*/, start/*:?number*/)/*:Array<number>*/ {
@ -1596,9 +1597,6 @@ function parseDate(str/*:string|Date*/)/*:Date*/ {
var fixdate = browser ? parseDate("2014-02-19T14:30:00.000Z") : new Date("2014-02-19T14:30Z");
describe('roundtrip features', function() {
var bef = (function() { X = require(modp); XLSX_ZAHL=require("./dist/xlsx.zahl"); });
if(typeof before != 'undefined') before(bef);
else it('before', bef);
describe('should preserve core properties', function() { [
['xls', paths.cpxls],
['xlml', paths.cpxml],
@ -2128,7 +2126,7 @@ function plaintext_test(wb, raw) {
var sheet = wb.Sheets[wb.SheetNames[0]];
plaintext_val.forEach(function(x) {
var cell = get_cell(sheet, x[0]);
var tcval = x[2+(!!raw ? 1 : 0)];
var tcval = x[2+(raw ? 1 : 0)];
var type = raw ? 's' : x[1];
if(x.length == 1) { if(cell) { assert.equal(cell.t, 'z'); assert.ok(!cell.v); } return; }
assert.equal(cell.v, tcval); assert.equal(cell.t, type);

@ -7958,7 +7958,7 @@ function sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {
var cp = +dbf_reverse_map[/*::String(*/current_codepage/*::)*/] || 0x03;
h.write_shift(4, 0x00000000 | (cp<<8));
if(dbf_codepage_map[cp] != +o.codepage) {
console.error("DBF Unsupported codepage " + current_codepage + ", using 1252");
if(o.codepage) console.error("DBF Unsupported codepage " + current_codepage + ", using 1252");
current_codepage = 1252;
}
@ -8225,7 +8225,7 @@ var SYLK = /*#__PURE__*/(function() {
case 'b': o += cell.v ? "TRUE" : "FALSE"; break;
case 'e': o += cell.w || cell.v; break;
case 'd': o += '"' + (cell.w || cell.v) + '"'; break;
case 's': o += '"' + cell.v.replace(/"/g,"").replace(/;/g, ";;") + '"'; break;
case 's': o += '"' + (cell.v == null ? "" : String(cell.v)).replace(/"/g,"").replace(/;/g, ";;") + '"'; break;
}
return o;
}
@ -10005,6 +10005,7 @@ function write_sst_xml(sst/*:SST*/, opts)/*:string*/ {
else {
sitag += "<t";
if(!s.t) s.t = "";
if(typeof s.t !== "string") s.t = String(s.t);
if(s.t.match(straywsregex)) sitag += ' xml:space="preserve"';
sitag += ">" + escapexml(s.t) + "</t>";
}
@ -15543,7 +15544,10 @@ function write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string
var ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:"array", ref:cell.F} : null;
v = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : "");
}
if(cell.l) ws['!links'].push([ref, cell.l]);
if(cell.l) {
cell.l.display = escapexml(vv);
ws['!links'].push([ref, cell.l]);
}
if(cell.D) o.cm = 1;
return writextag('c', v, o);
}
@ -15853,6 +15857,7 @@ function write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {
}
if((relc = l[1].Target.indexOf("#")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));
if(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);
rel.display = l[1].display;
o[o.length] = writextag("hyperlink",null,rel);
});
o[o.length] = "</hyperlinks>";
@ -16157,9 +16162,10 @@ function parse_BrtCellSt(data) {
return [cell, value, 'str'];
}
function write_BrtCellSt(cell, ncell, o) {
var data = cell.v == null ? "" : String(cell.v);
if(o == null) o = new_buf(12 + 4 * cell.v.length);
write_XLSBCell(ncell, o);
write_XLWideString(cell.v, o);
write_XLWideString(data, o);
return o.length > o.l ? o.slice(0, o.l) : o;
}
function parse_BrtShortSt(data) {
@ -16168,9 +16174,10 @@ function parse_BrtShortSt(data) {
return [cell, value, 'str'];
}
function write_BrtShortSt(cell, ncell, o) {
if(o == null) o = new_buf(8 + 4 * cell.v.length);
var data = cell.v == null ? "" : String(cell.v);
if(o == null) o = new_buf(8 + 4 * data.length);
write_XLSBShortCell(ncell, o);
write_XLWideString(cell.v, o);
write_XLWideString(data, o);
return o.length > o.l ? o.slice(0, o.l) : o;
}
@ -16723,7 +16730,7 @@ function write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:num
switch(cell.t) {
case 's': case 'str':
if(opts.bookSST) {
vv = get_sst_id(opts.Strings, (cell.v/*:any*/), opts.revStrings);
vv = get_sst_id(opts.Strings, (cell.v == null ? "" : String(cell.v)/*:any*/), opts.revStrings);
o.t = "s"; o.v = vv;
if(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));
else write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));
@ -21269,7 +21276,7 @@ function write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:n
case 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;
/* TODO: codepage, sst */
case 's': case 'str':
write_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||"").slice(0,255)));
write_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, cell.v == null ? "" : String(cell.v).slice(0,255)));
return;
}
write_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));
@ -21393,9 +21400,9 @@ function write_ws_biff8_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:n
/* TODO: codepage, sst */
case 's': case 'str':
if(opts.bookSST) {
var isst = get_sst_id(opts.Strings, cell.v, opts.revStrings);
var isst = get_sst_id(opts.Strings, cell.v == null ? "" : String(cell.v), opts.revStrings);
write_biff_rec(ba, 0x00fd /* LabelSst */, write_LabelSst(R, C, isst, os, opts));
} else write_biff_rec(ba, 0x0204 /* Label */, write_Label(R, C, (cell.v||"").slice(0,255), os, opts));
} else write_biff_rec(ba, 0x0204 /* Label */, write_Label(R, C, (cell.v == null ? "" : String(cell.v)).slice(0,255), os, opts));
break;
default:
write_biff_rec(ba, 0x0201 /* Blank */, write_XLSCell(R, C, os));
@ -23279,6 +23286,39 @@ function varint_to_i32(buf) {
}
return i32;
}
function varint_to_u64(buf) {
var l = 0, lo = buf[l] & 127, hi = 0;
varint:
if (buf[l++] >= 128) {
lo |= (buf[l] & 127) << 7;
if (buf[l++] < 128)
break varint;
lo |= (buf[l] & 127) << 14;
if (buf[l++] < 128)
break varint;
lo |= (buf[l] & 127) << 21;
if (buf[l++] < 128)
break varint;
lo |= (buf[l] & 127) << 28;
hi = buf[l] >> 4 & 7;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 3;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 10;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 17;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 24;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 31;
}
return [lo >>> 0, hi >>> 0];
}
function parse_shallow(buf) {
var out = [], ptr = [0];
while (ptr[0] < buf.length) {
@ -23815,10 +23855,12 @@ function write_new_storage(cell, sst) {
l += 8;
break;
case "s":
if (sst.indexOf(cell.v) == -1)
throw new Error("Value ".concat(cell.v, " missing from SST!"));
var s = cell.v == null ? "" : String(cell.v);
var isst = sst.indexOf(s);
if (isst == -1)
sst[isst = sst.length] = s;
out[1] = 3;
dv.setUint32(l, sst.indexOf(cell.v), true);
dv.setUint32(l, isst, true);
flags |= 8;
l += 4;
break;
@ -23845,10 +23887,12 @@ function write_old_storage(cell, sst) {
l += 8;
break;
case "s":
if (sst.indexOf(cell.v) == -1)
throw new Error("Value ".concat(cell.v, " missing from SST!"));
var s = cell.v == null ? "" : String(cell.v);
var isst = sst.indexOf(s);
if (isst == -1)
sst[isst = sst.length] = s;
out[2] = 3;
dv.setUint32(l, sst.indexOf(cell.v), true);
dv.setUint32(l, isst, true);
flags |= 16;
l += 4;
break;
@ -23882,6 +23926,22 @@ function write_TSP_Reference(idx) {
[{ type: 0, data: write_varint49(idx) }]
]);
}
function numbers_add_oref(iwa, ref) {
var _a;
var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];
var orefidx = orefs.indexOf(ref);
if (orefidx == -1) {
orefs.push(ref);
iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];
}
}
function numbers_del_oref(iwa, ref) {
var _a;
var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];
iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs.filter(function(r) {
return r != ref;
})) }];
}
function parse_TST_TableDataList(M, root) {
var pb = parse_shallow(root.data);
var type = varint_to_i32(pb[1][0].data);
@ -23889,6 +23949,8 @@ function parse_TST_TableDataList(M, root) {
var data = [];
(entries || []).forEach(function(entry) {
var le = parse_shallow(entry.data);
if (!le[1])
return;
var key = varint_to_i32(le[1][0].data) >>> 0;
switch (type) {
case 1:
@ -24098,7 +24160,7 @@ function parse_TN_DocumentArchive(M, root, opts) {
return out;
}
function parse_numbers_iwa(cfb, opts) {
var _a, _b, _c, _d, _e, _f, _g, _h;
var _a, _b, _c, _d, _e, _f, _g;
var M = {}, indices = [];
cfb.FullPaths.forEach(function(p) {
if (p.match(/\.iwpv2/))
@ -24128,9 +24190,9 @@ function parse_numbers_iwa(cfb, opts) {
});
if (!indices.length)
throw new Error("File has no messages");
if (((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1e4)
if (((_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0].meta) == null ? void 0 : _b[1]) == null ? void 0 : _c[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1e4)
throw new Error("Pages documents are not supported");
var docroot = ((_h = (_g = (_f = (_e = M == null ? void 0 : M[1]) == null ? void 0 : _e[0]) == null ? void 0 : _f.meta) == null ? void 0 : _g[1]) == null ? void 0 : _h[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];
var docroot = ((_g = (_f = (_e = (_d = M == null ? void 0 : M[1]) == null ? void 0 : _d[0]) == null ? void 0 : _e.meta) == null ? void 0 : _f[1]) == null ? void 0 : _g[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];
if (!docroot)
indices.forEach(function(idx) {
M[idx].forEach(function(iwam) {
@ -24147,8 +24209,23 @@ function parse_numbers_iwa(cfb, opts) {
throw new Error("Cannot find Document root");
return parse_TN_DocumentArchive(M, docroot, opts);
}
function write_tile_row(tri, data, SST, wide) {
function write_TST_TileRowInfo(data, SST, wide) {
var _a, _b;
var tri = [
[],
[{ type: 0, data: write_varint49(0) }],
[{ type: 0, data: write_varint49(0) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(5) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(1) }]
];
if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))
throw "Mutation only works on post-BNC storages!";
var cnt = 0;
@ -24188,6 +24265,11 @@ function write_tile_row(tri, data, SST, wide) {
_celload = write_old_storage({ t: "b", v: data[C] }, SST);
break;
default:
if (data[C] instanceof Date) {
celload = write_new_storage({ t: "s", v: data[C].toISOString() }, SST);
_celload = write_old_storage({ t: "s", v: data[C].toISOString() }, SST);
break;
}
throw new Error("Unsupported value " + data[C]);
}
cell_storage.push(celload);
@ -24207,7 +24289,7 @@ function write_tile_row(tri, data, SST, wide) {
tri[6][0].data = u8concat(cell_storage);
tri[3][0].data = u8concat(_cell_storage);
tri[8] = [{ type: 0, data: write_varint49(wide ? 1 : 0) }];
return cnt;
return tri;
}
function write_iwam(type, payload) {
return {
@ -24275,19 +24357,20 @@ function write_numbers_iwa(wb, opts) {
if (!opts || !opts.numbers)
throw new Error("Must pass a `numbers` option -- check the README");
var cfb = CFB.read(opts.numbers, { type: "base64" });
var dependents = build_numbers_deps(cfb);
var cfb_DA = CFB.find(cfb, dependents[1].location);
if (!cfb_DA)
throw "Could not find ".concat(dependents[1].location, " in Numbers template");
var iwa_DA = parse_iwa_file(decompress_iwa_file(cfb_DA.content));
var docroot = iwa_DA.find(function(packet) {
return packet.id == 1;
});
var deps = build_numbers_deps(cfb);
var docroot = numbers_iwa_find(cfb, deps, 1);
if (docroot == null)
throw "Could not find message ".concat(1, " in Numbers template");
var sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);
if (sheetrefs.length > 1)
throw new Error("Template NUMBERS file must have exactly one sheet");
wb.SheetNames.forEach(function(name, idx) {
return write_numbers_ws(cfb, dependents, wb.Sheets[name], name, idx, sheetrefs[idx]);
if (idx >= 1) {
numbers_add_ws(cfb, deps, idx + 1);
docroot = numbers_iwa_find(cfb, deps, 1);
sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);
}
write_numbers_ws(cfb, deps, wb.Sheets[name], name, idx, sheetrefs[idx]);
});
return cfb;
}
@ -24313,9 +24396,364 @@ function numbers_iwa_find(cfb, deps, id) {
});
return ainfo;
}
function numbers_add_ws(cfb, deps, wsidx) {
var sheetref = -1, newsheetref = -1;
var remap = {};
numbers_iwa_doit(cfb, deps, 1, function(docroot, arch) {
var doc = parse_shallow(docroot.messages[0].data);
sheetref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);
newsheetref = get_unique_msgid({ deps: [1], location: deps[sheetref].location, type: 2 }, deps);
remap[sheetref] = newsheetref;
numbers_add_oref(docroot, newsheetref);
doc[1].push({ type: 2, data: write_TSP_Reference(newsheetref) });
var sheet = numbers_iwa_find(cfb, deps, sheetref);
sheet.id = newsheetref;
if (deps[1].location == deps[newsheetref].location)
arch.push(sheet);
else
numbers_iwa_doit(cfb, deps, newsheetref, function(_, x) {
return x.push(sheet);
});
docroot.messages[0].data = write_shallow(doc);
});
var tiaref = -1;
numbers_iwa_doit(cfb, deps, newsheetref, function(sheetroot, arch) {
var sa = parse_shallow(sheetroot.messages[0].data);
for (var i = 3; i <= 69; ++i)
delete sa[i];
var drawables = mappa(sa[2], parse_TSP_Reference);
drawables.forEach(function(n) {
return numbers_del_oref(sheetroot, n);
});
tiaref = get_unique_msgid({ deps: [newsheetref], location: deps[drawables[0]].location, type: deps[drawables[0]].type }, deps);
numbers_add_oref(sheetroot, tiaref);
remap[drawables[0]] = tiaref;
sa[2] = [{ type: 2, data: write_TSP_Reference(tiaref) }];
var tia = numbers_iwa_find(cfb, deps, drawables[0]);
tia.id = tiaref;
if (deps[drawables[0]].location == deps[newsheetref].location)
arch.push(tia);
else {
var loc2 = deps[newsheetref].location;
loc2 = loc2.replace(/^Root Entry\//, "");
loc2 = loc2.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
var parentidx = mlist[3].findIndex(function(m) {
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc2;
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc2)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(tiaref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
numbers_iwa_doit(cfb, deps, tiaref, function(_, x) {
return x.push(tia);
});
}
sheetroot.messages[0].data = write_shallow(sa);
});
var tmaref = -1;
numbers_iwa_doit(cfb, deps, tiaref, function(tiaroot, arch) {
var tia = parse_shallow(tiaroot.messages[0].data);
var da = parse_shallow(tia[1][0].data);
for (var i = 3; i <= 69; ++i)
delete da[i];
var dap = parse_TSP_Reference(da[2][0].data);
da[2][0].data = write_TSP_Reference(remap[dap]);
tia[1][0].data = write_shallow(da);
var oldtmaref = parse_TSP_Reference(tia[2][0].data);
numbers_del_oref(tiaroot, oldtmaref);
tmaref = get_unique_msgid({ deps: [tiaref], location: deps[oldtmaref].location, type: deps[oldtmaref].type }, deps);
numbers_add_oref(tiaroot, tmaref);
remap[oldtmaref] = tmaref;
tia[2][0].data = write_TSP_Reference(tmaref);
var tma = numbers_iwa_find(cfb, deps, oldtmaref);
tma.id = tmaref;
if (deps[tiaref].location == deps[tmaref].location)
arch.push(tma);
else
numbers_iwa_doit(cfb, deps, tmaref, function(_, x) {
return x.push(tma);
});
tiaroot.messages[0].data = write_shallow(tia);
});
var loc = deps[tmaref].location;
loc = loc.replace(/^Root Entry\//, "");
loc = loc.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, tmaref, function(tmaroot, arch) {
var _a, _b;
var tma = parse_shallow(tmaroot.messages[0].data);
var uuid = u8str(tma[1][0].data), new_uuid = uuid.replace(/-[A-Z0-9]*/, "-".concat(wsidx.toString(16).padStart(4, "0")));
tma[1][0].data = stru8(new_uuid);
[12, 13, 29, 31, 32, 33, 39, 44, 47, 81, 82, 84].forEach(function(n) {
return delete tma[n];
});
if (tma[45]) {
var srrta = parse_shallow(tma[45][0].data);
var ref = parse_TSP_Reference(srrta[1][0].data);
numbers_del_oref(tmaroot, ref);
delete tma[45];
}
if (tma[70]) {
var hsoa = parse_shallow(tma[70][0].data);
(_a = hsoa[2]) == null ? void 0 : _a.forEach(function(item) {
var hsa = parse_shallow(item.data);
[2, 3].map(function(n) {
return hsa[n][0];
}).forEach(function(hseadata) {
var hsea = parse_shallow(hseadata.data);
if (!hsea[8])
return;
var ref2 = parse_TSP_Reference(hsea[8][0].data);
numbers_del_oref(tmaroot, ref2);
});
});
delete tma[70];
}
[
46,
30,
34,
35,
36,
38,
48,
49,
60,
61,
62,
63,
64,
71,
72,
73,
74,
75,
85,
86,
87,
88,
89
].forEach(function(n) {
if (!tma[n])
return;
var ref2 = parse_TSP_Reference(tma[n][0].data);
delete tma[n];
numbers_del_oref(tmaroot, ref2);
});
var store = parse_shallow(tma[4][0].data);
{
[2, 4, 5, 6, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22].forEach(function(n) {
var _a2;
if (!((_a2 = store[n]) == null ? void 0 : _a2[0]))
return;
var oldref = parse_TSP_Reference(store[n][0].data);
var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);
numbers_del_oref(tmaroot, oldref);
numbers_add_oref(tmaroot, newref);
remap[oldref] = newref;
var msg = numbers_iwa_find(cfb, deps, oldref);
msg.id = newref;
if (deps[oldref].location == deps[tmaref].location)
arch.push(msg);
else {
deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());
if (deps[newref].location == deps[oldref].location)
deps[newref].location = deps[newref].location.replace(/\.iwa/, "-".concat(newref, ".iwa"));
CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));
var newloc = deps[newref].location;
newloc = newloc.replace(/^Root Entry\//, "");
newloc = newloc.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
mlist[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }],
[{ type: 2, data: stru8(newloc.replace(/-.*$/, "")) }],
[{ type: 2, data: stru8(newloc) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[],
[],
[],
[],
[{ type: 0, data: write_varint49(0) }],
[],
[{ type: 0, data: write_varint49(0) }]
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a3, _b2;
var mm = parse_shallow(m.data);
if ((_a3 = mm[3]) == null ? void 0 : _a3[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
}
store[n][0].data = write_TSP_Reference(newref);
});
var row_headers = parse_shallow(store[1][0].data);
{
(_b = row_headers[2]) == null ? void 0 : _b.forEach(function(tspref) {
var oldref = parse_TSP_Reference(tspref.data);
var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);
numbers_del_oref(tmaroot, oldref);
numbers_add_oref(tmaroot, newref);
remap[oldref] = newref;
var msg = numbers_iwa_find(cfb, deps, oldref);
msg.id = newref;
if (deps[oldref].location == deps[tmaref].location) {
arch.push(msg);
} else {
deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());
if (deps[newref].location == deps[oldref].location)
deps[newref].location = deps[newref].location.replace(/\.iwa/, "-".concat(newref, ".iwa"));
CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));
var newloc = deps[newref].location;
newloc = newloc.replace(/^Root Entry\//, "");
newloc = newloc.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
mlist[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }],
[{ type: 2, data: stru8(newloc.replace(/-.*$/, "")) }],
[{ type: 2, data: stru8(newloc) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[],
[],
[],
[],
[{ type: 0, data: write_varint49(0) }],
[],
[{ type: 0, data: write_varint49(0) }]
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
}
tspref.data = write_TSP_Reference(newref);
});
}
store[1][0].data = write_shallow(row_headers);
var tiles = parse_shallow(store[3][0].data);
{
tiles[1].forEach(function(t) {
var tst = parse_shallow(t.data);
var oldtileref = parse_TSP_Reference(tst[2][0].data);
var newtileref = remap[oldtileref];
if (!remap[oldtileref]) {
newtileref = get_unique_msgid({ deps: [tmaref], location: "", type: deps[oldtileref].type }, deps);
deps[newtileref].location = "Root Entry/Index/Tables/Tile-".concat(newtileref, ".iwa");
remap[oldtileref] = newtileref;
var oldtile = numbers_iwa_find(cfb, deps, oldtileref);
oldtile.id = newtileref;
numbers_del_oref(tmaroot, oldtileref);
numbers_add_oref(tmaroot, newtileref);
CFB.utils.cfb_add(cfb, "/Index/Tables/Tile-".concat(newtileref, ".iwa"), compress_iwa_file(write_iwa_file([oldtile])));
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
mlist[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(newtileref) }],
[{ type: 2, data: stru8("Tables/Tile") }],
[{ type: 2, data: stru8("Tables/Tile-".concat(newtileref)) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[],
[],
[],
[],
[{ type: 0, data: write_varint49(0) }],
[],
[{ type: 0, data: write_varint49(0) }]
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileref + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(newtileref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
}
tst[2][0].data = write_TSP_Reference(newtileref);
t.data = write_shallow(tst);
});
}
store[3][0].data = write_shallow(tiles);
}
tma[4][0].data = write_shallow(store);
tmaroot.messages[0].data = write_shallow(tma);
});
}
function write_numbers_ws(cfb, deps, ws, wsname, sheetidx, rootref) {
if (sheetidx >= 1)
return console.error("The Numbers writer currently writes only the first table");
var drawables = [];
numbers_iwa_doit(cfb, deps, rootref, function(docroot) {
var sheetref = parse_shallow(docroot.messages[0].data);
@ -24333,7 +24771,6 @@ function write_numbers_ws(cfb, deps, ws, wsname, sheetidx, rootref) {
}
var USE_WIDE_ROWS = true;
function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
var _a, _b;
var range = decode_range(ws["!ref"]);
range.s.r = range.s.c = 0;
var trunc = false;
@ -24348,15 +24785,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
if (trunc)
console.error("Truncating to ".concat(encode_range(range)));
var data = sheet_to_json(ws, { range: range, header: 1 });
var SST = ["~Sh33tJ5~"], SST_set = new Set(SST);
data.forEach(function(row) {
return row.forEach(function(cell) {
if (typeof cell == "string" && !SST_set.has(cell)) {
SST.push(cell);
SST_set.add(cell);
}
});
});
var SST = ["~Sh33tJ5~"];
var loc = deps[tmaref].location;
loc = loc.replace(/^Root Entry\//, "");
loc = loc.replace(/^Index\//, "").replace(/\.iwa$/, "");
@ -24369,9 +24798,9 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
{
var row_header_ref = parse_TSP_Reference(parse_shallow(store[1][0].data)[2][0].data);
numbers_iwa_doit(cfb, deps, row_header_ref, function(rowhead, _x) {
var _a2;
var _a;
var base_bucket = parse_shallow(rowhead.messages[0].data);
if ((_a2 = base_bucket == null ? void 0 : base_bucket[2]) == null ? void 0 : _a2[0])
if ((_a = base_bucket == null ? void 0 : base_bucket[2]) == null ? void 0 : _a[0])
for (var R2 = 0; R2 < data.length; ++R2) {
var _bucket = parse_shallow(base_bucket[2][0].data);
_bucket[1][0].data = write_varint49(R2);
@ -24391,22 +24820,6 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
}
colhead.messages[0].data = write_shallow(base_bucket);
});
var sstref = parse_TSP_Reference(store[4][0].data);
numbers_iwa_doit(cfb, deps, sstref, function(sstroot) {
var sstdata = parse_shallow(sstroot.messages[0].data);
{
sstdata[3] = [];
SST.forEach(function(str, i) {
sstdata[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(i) }],
[{ type: 0, data: write_varint49(1) }],
[{ type: 2, data: stru8(str) }]
]) });
});
}
sstroot.messages[0].data = write_shallow(sstdata);
});
var rbtree = parse_shallow(store[9][0].data);
rbtree[1] = [];
var tilestore = parse_shallow(store[3][0].data);
@ -24414,25 +24827,27 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
var tstride = 256;
tilestore[2] = [{ type: 0, data: write_varint49(tstride) }];
var tileref = parse_TSP_Reference(parse_shallow(tilestore[1][0].data)[2][0].data);
var save_token = 0;
var save_token = function() {
var metadata = numbers_iwa_find(cfb, deps, 2);
var mlist = parse_shallow(metadata.messages[0].data);
var mlst = mlist[3].filter(function(m) {
return parse_varint49(parse_shallow(m.data)[1][0].data) == tileref;
});
return (mlst == null ? void 0 : mlst.length) ? parse_varint49(parse_shallow(mlst[0].data)[12][0].data) : 0;
}();
{
CFB.utils.cfb_del(cfb, deps[tileref].location);
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
var lst = mlist[3].filter(function(m) {
return parse_varint49(parse_shallow(m.data)[1][0].data) == tileref;
});
if (lst && lst.length > 0)
save_token = parse_varint49(parse_shallow(lst[0].data)[12][0].data);
mlist[3] = mlist[3].filter(function(m) {
return parse_varint49(parse_shallow(m.data)[1][0].data) != tileref;
});
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
@ -24445,6 +24860,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
numbers_del_oref(tmaroot, tileref);
}
tilestore[1] = [];
var ntiles = Math.ceil((range.e.r + 1) / tstride);
@ -24467,22 +24883,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
[{ type: 0, data: write_varint49(USE_WIDE_ROWS ? 1 : 0) }]
];
for (var R = tidx * tstride; R <= Math.min(range.e.r, (tidx + 1) * tstride - 1); ++R) {
var tilerow = [
[],
[{ type: 0, data: write_varint49(0) }],
[{ type: 0, data: write_varint49(0) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(5) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(1) }]
];
write_tile_row(tilerow, data[R], SST, USE_WIDE_ROWS);
var tilerow = write_TST_TileRowInfo(data[R], SST, USE_WIDE_ROWS);
tilerow[1][0].data = write_varint49(R - tidx * tstride);
tiledata[5].push({ data: write_shallow(tilerow), type: 2 });
}
@ -24516,11 +24917,11 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileid + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
@ -24537,12 +24938,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
var orefs = ((_a = tmaroot.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(tmaroot.messages[0].meta[5][0].data) : [];
var orefidx = orefs.indexOf(newtileid);
if (orefidx == -1) {
orefs[orefidx = orefs.length] = newtileid;
tmaroot.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];
}
numbers_add_oref(tmaroot, newtileid);
rbtree[1].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(tidx * tstride) }],
@ -24582,11 +24978,11 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
@ -24603,14 +24999,27 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
orefs = ((_b = tmaroot.messages[0].meta[5]) == null ? void 0 : _b[0]) ? parse_packed_varints(tmaroot.messages[0].meta[5][0].data) : [];
orefidx = orefs.indexOf(mergeid);
if (orefidx == -1) {
orefs[orefidx = orefs.length] = mergeid;
tmaroot.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];
}
numbers_add_oref(tmaroot, mergeid);
} else
delete store[13];
var sstref = parse_TSP_Reference(store[4][0].data);
numbers_iwa_doit(cfb, deps, sstref, function(sstroot) {
var sstdata = parse_shallow(sstroot.messages[0].data);
{
sstdata[3] = [];
SST.forEach(function(str, i) {
if (i == 0)
return;
sstdata[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(i) }],
[{ type: 0, data: write_varint49(1) }],
[{ type: 2, data: stru8(str) }]
]) });
});
}
sstroot.messages[0].data = write_shallow(sstdata);
});
}
pb[4][0].data = write_shallow(store);
}

615
xlsx.js generated

@ -7868,7 +7868,7 @@ function sheet_to_dbf(ws, opts) {
var cp = +dbf_reverse_map[current_codepage] || 0x03;
h.write_shift(4, 0x00000000 | (cp<<8));
if(dbf_codepage_map[cp] != +o.codepage) {
console.error("DBF Unsupported codepage " + current_codepage + ", using 1252");
if(o.codepage) console.error("DBF Unsupported codepage " + current_codepage + ", using 1252");
current_codepage = 1252;
}
@ -8135,7 +8135,7 @@ var SYLK = (function() {
case 'b': o += cell.v ? "TRUE" : "FALSE"; break;
case 'e': o += cell.w || cell.v; break;
case 'd': o += '"' + (cell.w || cell.v) + '"'; break;
case 's': o += '"' + cell.v.replace(/"/g,"").replace(/;/g, ";;") + '"'; break;
case 's': o += '"' + (cell.v == null ? "" : String(cell.v)).replace(/"/g,"").replace(/;/g, ";;") + '"'; break;
}
return o;
}
@ -9915,6 +9915,7 @@ function write_sst_xml(sst, opts) {
else {
sitag += "<t";
if(!s.t) s.t = "";
if(typeof s.t !== "string") s.t = String(s.t);
if(s.t.match(straywsregex)) sitag += ' xml:space="preserve"';
sitag += ">" + escapexml(s.t) + "</t>";
}
@ -15449,7 +15450,10 @@ function write_ws_xml_cell(cell, ref, ws, opts) {
var ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:"array", ref:cell.F} : null;
v = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : "");
}
if(cell.l) ws['!links'].push([ref, cell.l]);
if(cell.l) {
cell.l.display = escapexml(vv);
ws['!links'].push([ref, cell.l]);
}
if(cell.D) o.cm = 1;
return writextag('c', v, o);
}
@ -15759,6 +15763,7 @@ ws['!links'].forEach(function(l) {
}
if((relc = l[1].Target.indexOf("#")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));
if(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);
rel.display = l[1].display;
o[o.length] = writextag("hyperlink",null,rel);
});
o[o.length] = "</hyperlinks>";
@ -16063,9 +16068,10 @@ function parse_BrtCellSt(data) {
return [cell, value, 'str'];
}
function write_BrtCellSt(cell, ncell, o) {
var data = cell.v == null ? "" : String(cell.v);
if(o == null) o = new_buf(12 + 4 * cell.v.length);
write_XLSBCell(ncell, o);
write_XLWideString(cell.v, o);
write_XLWideString(data, o);
return o.length > o.l ? o.slice(0, o.l) : o;
}
function parse_BrtShortSt(data) {
@ -16074,9 +16080,10 @@ function parse_BrtShortSt(data) {
return [cell, value, 'str'];
}
function write_BrtShortSt(cell, ncell, o) {
if(o == null) o = new_buf(8 + 4 * cell.v.length);
var data = cell.v == null ? "" : String(cell.v);
if(o == null) o = new_buf(8 + 4 * data.length);
write_XLSBShortCell(ncell, o);
write_XLWideString(cell.v, o);
write_XLWideString(data, o);
return o.length > o.l ? o.slice(0, o.l) : o;
}
@ -16628,7 +16635,7 @@ function write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen) {
switch(cell.t) {
case 's': case 'str':
if(opts.bookSST) {
vv = get_sst_id(opts.Strings, (cell.v), opts.revStrings);
vv = get_sst_id(opts.Strings, (cell.v == null ? "" : String(cell.v)), opts.revStrings);
o.t = "s"; o.v = vv;
if(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));
else write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));
@ -21160,7 +21167,7 @@ function write_ws_biff2_cell(ba, cell, R, C) {
case 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;
/* TODO: codepage, sst */
case 's': case 'str':
write_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||"").slice(0,255)));
write_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, cell.v == null ? "" : String(cell.v).slice(0,255)));
return;
}
write_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));
@ -21283,9 +21290,9 @@ function write_ws_biff8_cell(ba, cell, R, C, opts) {
/* TODO: codepage, sst */
case 's': case 'str':
if(opts.bookSST) {
var isst = get_sst_id(opts.Strings, cell.v, opts.revStrings);
var isst = get_sst_id(opts.Strings, cell.v == null ? "" : String(cell.v), opts.revStrings);
write_biff_rec(ba, 0x00fd /* LabelSst */, write_LabelSst(R, C, isst, os, opts));
} else write_biff_rec(ba, 0x0204 /* Label */, write_Label(R, C, (cell.v||"").slice(0,255), os, opts));
} else write_biff_rec(ba, 0x0204 /* Label */, write_Label(R, C, (cell.v == null ? "" : String(cell.v)).slice(0,255), os, opts));
break;
default:
write_biff_rec(ba, 0x0201 /* Blank */, write_XLSCell(R, C, os));
@ -23169,6 +23176,39 @@ function varint_to_i32(buf) {
}
return i32;
}
function varint_to_u64(buf) {
var l = 0, lo = buf[l] & 127, hi = 0;
varint:
if (buf[l++] >= 128) {
lo |= (buf[l] & 127) << 7;
if (buf[l++] < 128)
break varint;
lo |= (buf[l] & 127) << 14;
if (buf[l++] < 128)
break varint;
lo |= (buf[l] & 127) << 21;
if (buf[l++] < 128)
break varint;
lo |= (buf[l] & 127) << 28;
hi = buf[l] >> 4 & 7;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 3;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 10;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 17;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 24;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 31;
}
return [lo >>> 0, hi >>> 0];
}
function parse_shallow(buf) {
var out = [], ptr = [0];
while (ptr[0] < buf.length) {
@ -23705,10 +23745,12 @@ function write_new_storage(cell, sst) {
l += 8;
break;
case "s":
if (sst.indexOf(cell.v) == -1)
throw new Error("Value ".concat(cell.v, " missing from SST!"));
var s = cell.v == null ? "" : String(cell.v);
var isst = sst.indexOf(s);
if (isst == -1)
sst[isst = sst.length] = s;
out[1] = 3;
dv.setUint32(l, sst.indexOf(cell.v), true);
dv.setUint32(l, isst, true);
flags |= 8;
l += 4;
break;
@ -23735,10 +23777,12 @@ function write_old_storage(cell, sst) {
l += 8;
break;
case "s":
if (sst.indexOf(cell.v) == -1)
throw new Error("Value ".concat(cell.v, " missing from SST!"));
var s = cell.v == null ? "" : String(cell.v);
var isst = sst.indexOf(s);
if (isst == -1)
sst[isst = sst.length] = s;
out[2] = 3;
dv.setUint32(l, sst.indexOf(cell.v), true);
dv.setUint32(l, isst, true);
flags |= 16;
l += 4;
break;
@ -23772,6 +23816,22 @@ function write_TSP_Reference(idx) {
[{ type: 0, data: write_varint49(idx) }]
]);
}
function numbers_add_oref(iwa, ref) {
var _a;
var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];
var orefidx = orefs.indexOf(ref);
if (orefidx == -1) {
orefs.push(ref);
iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];
}
}
function numbers_del_oref(iwa, ref) {
var _a;
var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];
iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs.filter(function(r) {
return r != ref;
})) }];
}
function parse_TST_TableDataList(M, root) {
var pb = parse_shallow(root.data);
var type = varint_to_i32(pb[1][0].data);
@ -23779,6 +23839,8 @@ function parse_TST_TableDataList(M, root) {
var data = [];
(entries || []).forEach(function(entry) {
var le = parse_shallow(entry.data);
if (!le[1])
return;
var key = varint_to_i32(le[1][0].data) >>> 0;
switch (type) {
case 1:
@ -23988,7 +24050,7 @@ function parse_TN_DocumentArchive(M, root, opts) {
return out;
}
function parse_numbers_iwa(cfb, opts) {
var _a, _b, _c, _d, _e, _f, _g, _h;
var _a, _b, _c, _d, _e, _f, _g;
var M = {}, indices = [];
cfb.FullPaths.forEach(function(p) {
if (p.match(/\.iwpv2/))
@ -24018,9 +24080,9 @@ function parse_numbers_iwa(cfb, opts) {
});
if (!indices.length)
throw new Error("File has no messages");
if (((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1e4)
if (((_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0].meta) == null ? void 0 : _b[1]) == null ? void 0 : _c[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1e4)
throw new Error("Pages documents are not supported");
var docroot = ((_h = (_g = (_f = (_e = M == null ? void 0 : M[1]) == null ? void 0 : _e[0]) == null ? void 0 : _f.meta) == null ? void 0 : _g[1]) == null ? void 0 : _h[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];
var docroot = ((_g = (_f = (_e = (_d = M == null ? void 0 : M[1]) == null ? void 0 : _d[0]) == null ? void 0 : _e.meta) == null ? void 0 : _f[1]) == null ? void 0 : _g[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];
if (!docroot)
indices.forEach(function(idx) {
M[idx].forEach(function(iwam) {
@ -24037,8 +24099,23 @@ function parse_numbers_iwa(cfb, opts) {
throw new Error("Cannot find Document root");
return parse_TN_DocumentArchive(M, docroot, opts);
}
function write_tile_row(tri, data, SST, wide) {
function write_TST_TileRowInfo(data, SST, wide) {
var _a, _b;
var tri = [
[],
[{ type: 0, data: write_varint49(0) }],
[{ type: 0, data: write_varint49(0) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(5) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(1) }]
];
if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))
throw "Mutation only works on post-BNC storages!";
var cnt = 0;
@ -24078,6 +24155,11 @@ function write_tile_row(tri, data, SST, wide) {
_celload = write_old_storage({ t: "b", v: data[C] }, SST);
break;
default:
if (data[C] instanceof Date) {
celload = write_new_storage({ t: "s", v: data[C].toISOString() }, SST);
_celload = write_old_storage({ t: "s", v: data[C].toISOString() }, SST);
break;
}
throw new Error("Unsupported value " + data[C]);
}
cell_storage.push(celload);
@ -24097,7 +24179,7 @@ function write_tile_row(tri, data, SST, wide) {
tri[6][0].data = u8concat(cell_storage);
tri[3][0].data = u8concat(_cell_storage);
tri[8] = [{ type: 0, data: write_varint49(wide ? 1 : 0) }];
return cnt;
return tri;
}
function write_iwam(type, payload) {
return {
@ -24165,19 +24247,20 @@ function write_numbers_iwa(wb, opts) {
if (!opts || !opts.numbers)
throw new Error("Must pass a `numbers` option -- check the README");
var cfb = CFB.read(opts.numbers, { type: "base64" });
var dependents = build_numbers_deps(cfb);
var cfb_DA = CFB.find(cfb, dependents[1].location);
if (!cfb_DA)
throw "Could not find ".concat(dependents[1].location, " in Numbers template");
var iwa_DA = parse_iwa_file(decompress_iwa_file(cfb_DA.content));
var docroot = iwa_DA.find(function(packet) {
return packet.id == 1;
});
var deps = build_numbers_deps(cfb);
var docroot = numbers_iwa_find(cfb, deps, 1);
if (docroot == null)
throw "Could not find message ".concat(1, " in Numbers template");
var sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);
if (sheetrefs.length > 1)
throw new Error("Template NUMBERS file must have exactly one sheet");
wb.SheetNames.forEach(function(name, idx) {
return write_numbers_ws(cfb, dependents, wb.Sheets[name], name, idx, sheetrefs[idx]);
if (idx >= 1) {
numbers_add_ws(cfb, deps, idx + 1);
docroot = numbers_iwa_find(cfb, deps, 1);
sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);
}
write_numbers_ws(cfb, deps, wb.Sheets[name], name, idx, sheetrefs[idx]);
});
return cfb;
}
@ -24203,9 +24286,364 @@ function numbers_iwa_find(cfb, deps, id) {
});
return ainfo;
}
function numbers_add_ws(cfb, deps, wsidx) {
var sheetref = -1, newsheetref = -1;
var remap = {};
numbers_iwa_doit(cfb, deps, 1, function(docroot, arch) {
var doc = parse_shallow(docroot.messages[0].data);
sheetref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);
newsheetref = get_unique_msgid({ deps: [1], location: deps[sheetref].location, type: 2 }, deps);
remap[sheetref] = newsheetref;
numbers_add_oref(docroot, newsheetref);
doc[1].push({ type: 2, data: write_TSP_Reference(newsheetref) });
var sheet = numbers_iwa_find(cfb, deps, sheetref);
sheet.id = newsheetref;
if (deps[1].location == deps[newsheetref].location)
arch.push(sheet);
else
numbers_iwa_doit(cfb, deps, newsheetref, function(_, x) {
return x.push(sheet);
});
docroot.messages[0].data = write_shallow(doc);
});
var tiaref = -1;
numbers_iwa_doit(cfb, deps, newsheetref, function(sheetroot, arch) {
var sa = parse_shallow(sheetroot.messages[0].data);
for (var i = 3; i <= 69; ++i)
delete sa[i];
var drawables = mappa(sa[2], parse_TSP_Reference);
drawables.forEach(function(n) {
return numbers_del_oref(sheetroot, n);
});
tiaref = get_unique_msgid({ deps: [newsheetref], location: deps[drawables[0]].location, type: deps[drawables[0]].type }, deps);
numbers_add_oref(sheetroot, tiaref);
remap[drawables[0]] = tiaref;
sa[2] = [{ type: 2, data: write_TSP_Reference(tiaref) }];
var tia = numbers_iwa_find(cfb, deps, drawables[0]);
tia.id = tiaref;
if (deps[drawables[0]].location == deps[newsheetref].location)
arch.push(tia);
else {
var loc2 = deps[newsheetref].location;
loc2 = loc2.replace(/^Root Entry\//, "");
loc2 = loc2.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
var parentidx = mlist[3].findIndex(function(m) {
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc2;
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc2)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(tiaref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
numbers_iwa_doit(cfb, deps, tiaref, function(_, x) {
return x.push(tia);
});
}
sheetroot.messages[0].data = write_shallow(sa);
});
var tmaref = -1;
numbers_iwa_doit(cfb, deps, tiaref, function(tiaroot, arch) {
var tia = parse_shallow(tiaroot.messages[0].data);
var da = parse_shallow(tia[1][0].data);
for (var i = 3; i <= 69; ++i)
delete da[i];
var dap = parse_TSP_Reference(da[2][0].data);
da[2][0].data = write_TSP_Reference(remap[dap]);
tia[1][0].data = write_shallow(da);
var oldtmaref = parse_TSP_Reference(tia[2][0].data);
numbers_del_oref(tiaroot, oldtmaref);
tmaref = get_unique_msgid({ deps: [tiaref], location: deps[oldtmaref].location, type: deps[oldtmaref].type }, deps);
numbers_add_oref(tiaroot, tmaref);
remap[oldtmaref] = tmaref;
tia[2][0].data = write_TSP_Reference(tmaref);
var tma = numbers_iwa_find(cfb, deps, oldtmaref);
tma.id = tmaref;
if (deps[tiaref].location == deps[tmaref].location)
arch.push(tma);
else
numbers_iwa_doit(cfb, deps, tmaref, function(_, x) {
return x.push(tma);
});
tiaroot.messages[0].data = write_shallow(tia);
});
var loc = deps[tmaref].location;
loc = loc.replace(/^Root Entry\//, "");
loc = loc.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, tmaref, function(tmaroot, arch) {
var _a, _b;
var tma = parse_shallow(tmaroot.messages[0].data);
var uuid = u8str(tma[1][0].data), new_uuid = uuid.replace(/-[A-Z0-9]*/, "-".concat(wsidx.toString(16).padStart(4, "0")));
tma[1][0].data = stru8(new_uuid);
[12, 13, 29, 31, 32, 33, 39, 44, 47, 81, 82, 84].forEach(function(n) {
return delete tma[n];
});
if (tma[45]) {
var srrta = parse_shallow(tma[45][0].data);
var ref = parse_TSP_Reference(srrta[1][0].data);
numbers_del_oref(tmaroot, ref);
delete tma[45];
}
if (tma[70]) {
var hsoa = parse_shallow(tma[70][0].data);
(_a = hsoa[2]) == null ? void 0 : _a.forEach(function(item) {
var hsa = parse_shallow(item.data);
[2, 3].map(function(n) {
return hsa[n][0];
}).forEach(function(hseadata) {
var hsea = parse_shallow(hseadata.data);
if (!hsea[8])
return;
var ref2 = parse_TSP_Reference(hsea[8][0].data);
numbers_del_oref(tmaroot, ref2);
});
});
delete tma[70];
}
[
46,
30,
34,
35,
36,
38,
48,
49,
60,
61,
62,
63,
64,
71,
72,
73,
74,
75,
85,
86,
87,
88,
89
].forEach(function(n) {
if (!tma[n])
return;
var ref2 = parse_TSP_Reference(tma[n][0].data);
delete tma[n];
numbers_del_oref(tmaroot, ref2);
});
var store = parse_shallow(tma[4][0].data);
{
[2, 4, 5, 6, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22].forEach(function(n) {
var _a2;
if (!((_a2 = store[n]) == null ? void 0 : _a2[0]))
return;
var oldref = parse_TSP_Reference(store[n][0].data);
var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);
numbers_del_oref(tmaroot, oldref);
numbers_add_oref(tmaroot, newref);
remap[oldref] = newref;
var msg = numbers_iwa_find(cfb, deps, oldref);
msg.id = newref;
if (deps[oldref].location == deps[tmaref].location)
arch.push(msg);
else {
deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());
if (deps[newref].location == deps[oldref].location)
deps[newref].location = deps[newref].location.replace(/\.iwa/, "-".concat(newref, ".iwa"));
CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));
var newloc = deps[newref].location;
newloc = newloc.replace(/^Root Entry\//, "");
newloc = newloc.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
mlist[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }],
[{ type: 2, data: stru8(newloc.replace(/-.*$/, "")) }],
[{ type: 2, data: stru8(newloc) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[],
[],
[],
[],
[{ type: 0, data: write_varint49(0) }],
[],
[{ type: 0, data: write_varint49(0) }]
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a3, _b2;
var mm = parse_shallow(m.data);
if ((_a3 = mm[3]) == null ? void 0 : _a3[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
}
store[n][0].data = write_TSP_Reference(newref);
});
var row_headers = parse_shallow(store[1][0].data);
{
(_b = row_headers[2]) == null ? void 0 : _b.forEach(function(tspref) {
var oldref = parse_TSP_Reference(tspref.data);
var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);
numbers_del_oref(tmaroot, oldref);
numbers_add_oref(tmaroot, newref);
remap[oldref] = newref;
var msg = numbers_iwa_find(cfb, deps, oldref);
msg.id = newref;
if (deps[oldref].location == deps[tmaref].location) {
arch.push(msg);
} else {
deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());
if (deps[newref].location == deps[oldref].location)
deps[newref].location = deps[newref].location.replace(/\.iwa/, "-".concat(newref, ".iwa"));
CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));
var newloc = deps[newref].location;
newloc = newloc.replace(/^Root Entry\//, "");
newloc = newloc.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
mlist[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }],
[{ type: 2, data: stru8(newloc.replace(/-.*$/, "")) }],
[{ type: 2, data: stru8(newloc) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[],
[],
[],
[],
[{ type: 0, data: write_varint49(0) }],
[],
[{ type: 0, data: write_varint49(0) }]
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
}
tspref.data = write_TSP_Reference(newref);
});
}
store[1][0].data = write_shallow(row_headers);
var tiles = parse_shallow(store[3][0].data);
{
tiles[1].forEach(function(t) {
var tst = parse_shallow(t.data);
var oldtileref = parse_TSP_Reference(tst[2][0].data);
var newtileref = remap[oldtileref];
if (!remap[oldtileref]) {
newtileref = get_unique_msgid({ deps: [tmaref], location: "", type: deps[oldtileref].type }, deps);
deps[newtileref].location = "Root Entry/Index/Tables/Tile-".concat(newtileref, ".iwa");
remap[oldtileref] = newtileref;
var oldtile = numbers_iwa_find(cfb, deps, oldtileref);
oldtile.id = newtileref;
numbers_del_oref(tmaroot, oldtileref);
numbers_add_oref(tmaroot, newtileref);
CFB.utils.cfb_add(cfb, "/Index/Tables/Tile-".concat(newtileref, ".iwa"), compress_iwa_file(write_iwa_file([oldtile])));
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
mlist[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(newtileref) }],
[{ type: 2, data: stru8("Tables/Tile") }],
[{ type: 2, data: stru8("Tables/Tile-".concat(newtileref)) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[],
[],
[],
[],
[{ type: 0, data: write_varint49(0) }],
[],
[{ type: 0, data: write_varint49(0) }]
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileref + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(newtileref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
}
tst[2][0].data = write_TSP_Reference(newtileref);
t.data = write_shallow(tst);
});
}
store[3][0].data = write_shallow(tiles);
}
tma[4][0].data = write_shallow(store);
tmaroot.messages[0].data = write_shallow(tma);
});
}
function write_numbers_ws(cfb, deps, ws, wsname, sheetidx, rootref) {
if (sheetidx >= 1)
return console.error("The Numbers writer currently writes only the first table");
var drawables = [];
numbers_iwa_doit(cfb, deps, rootref, function(docroot) {
var sheetref = parse_shallow(docroot.messages[0].data);
@ -24223,7 +24661,6 @@ function write_numbers_ws(cfb, deps, ws, wsname, sheetidx, rootref) {
}
var USE_WIDE_ROWS = true;
function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
var _a, _b;
var range = decode_range(ws["!ref"]);
range.s.r = range.s.c = 0;
var trunc = false;
@ -24238,15 +24675,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
if (trunc)
console.error("Truncating to ".concat(encode_range(range)));
var data = sheet_to_json(ws, { range: range, header: 1 });
var SST = ["~Sh33tJ5~"], SST_set = new Set(SST);
data.forEach(function(row) {
return row.forEach(function(cell) {
if (typeof cell == "string" && !SST_set.has(cell)) {
SST.push(cell);
SST_set.add(cell);
}
});
});
var SST = ["~Sh33tJ5~"];
var loc = deps[tmaref].location;
loc = loc.replace(/^Root Entry\//, "");
loc = loc.replace(/^Index\//, "").replace(/\.iwa$/, "");
@ -24259,9 +24688,9 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
{
var row_header_ref = parse_TSP_Reference(parse_shallow(store[1][0].data)[2][0].data);
numbers_iwa_doit(cfb, deps, row_header_ref, function(rowhead, _x) {
var _a2;
var _a;
var base_bucket = parse_shallow(rowhead.messages[0].data);
if ((_a2 = base_bucket == null ? void 0 : base_bucket[2]) == null ? void 0 : _a2[0])
if ((_a = base_bucket == null ? void 0 : base_bucket[2]) == null ? void 0 : _a[0])
for (var R2 = 0; R2 < data.length; ++R2) {
var _bucket = parse_shallow(base_bucket[2][0].data);
_bucket[1][0].data = write_varint49(R2);
@ -24281,22 +24710,6 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
}
colhead.messages[0].data = write_shallow(base_bucket);
});
var sstref = parse_TSP_Reference(store[4][0].data);
numbers_iwa_doit(cfb, deps, sstref, function(sstroot) {
var sstdata = parse_shallow(sstroot.messages[0].data);
{
sstdata[3] = [];
SST.forEach(function(str, i) {
sstdata[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(i) }],
[{ type: 0, data: write_varint49(1) }],
[{ type: 2, data: stru8(str) }]
]) });
});
}
sstroot.messages[0].data = write_shallow(sstdata);
});
var rbtree = parse_shallow(store[9][0].data);
rbtree[1] = [];
var tilestore = parse_shallow(store[3][0].data);
@ -24304,25 +24717,27 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
var tstride = 256;
tilestore[2] = [{ type: 0, data: write_varint49(tstride) }];
var tileref = parse_TSP_Reference(parse_shallow(tilestore[1][0].data)[2][0].data);
var save_token = 0;
var save_token = function() {
var metadata = numbers_iwa_find(cfb, deps, 2);
var mlist = parse_shallow(metadata.messages[0].data);
var mlst = mlist[3].filter(function(m) {
return parse_varint49(parse_shallow(m.data)[1][0].data) == tileref;
});
return (mlst == null ? void 0 : mlst.length) ? parse_varint49(parse_shallow(mlst[0].data)[12][0].data) : 0;
}();
{
CFB.utils.cfb_del(cfb, deps[tileref].location);
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
var lst = mlist[3].filter(function(m) {
return parse_varint49(parse_shallow(m.data)[1][0].data) == tileref;
});
if (lst && lst.length > 0)
save_token = parse_varint49(parse_shallow(lst[0].data)[12][0].data);
mlist[3] = mlist[3].filter(function(m) {
return parse_varint49(parse_shallow(m.data)[1][0].data) != tileref;
});
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
@ -24335,6 +24750,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
numbers_del_oref(tmaroot, tileref);
}
tilestore[1] = [];
var ntiles = Math.ceil((range.e.r + 1) / tstride);
@ -24357,22 +24773,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
[{ type: 0, data: write_varint49(USE_WIDE_ROWS ? 1 : 0) }]
];
for (var R = tidx * tstride; R <= Math.min(range.e.r, (tidx + 1) * tstride - 1); ++R) {
var tilerow = [
[],
[{ type: 0, data: write_varint49(0) }],
[{ type: 0, data: write_varint49(0) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(5) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(1) }]
];
write_tile_row(tilerow, data[R], SST, USE_WIDE_ROWS);
var tilerow = write_TST_TileRowInfo(data[R], SST, USE_WIDE_ROWS);
tilerow[1][0].data = write_varint49(R - tidx * tstride);
tiledata[5].push({ data: write_shallow(tilerow), type: 2 });
}
@ -24406,11 +24807,11 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileid + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
@ -24427,12 +24828,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
var orefs = ((_a = tmaroot.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(tmaroot.messages[0].meta[5][0].data) : [];
var orefidx = orefs.indexOf(newtileid);
if (orefidx == -1) {
orefs[orefidx = orefs.length] = newtileid;
tmaroot.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];
}
numbers_add_oref(tmaroot, newtileid);
rbtree[1].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(tidx * tstride) }],
@ -24472,11 +24868,11 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
@ -24493,14 +24889,27 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
orefs = ((_b = tmaroot.messages[0].meta[5]) == null ? void 0 : _b[0]) ? parse_packed_varints(tmaroot.messages[0].meta[5][0].data) : [];
orefidx = orefs.indexOf(mergeid);
if (orefidx == -1) {
orefs[orefidx = orefs.length] = mergeid;
tmaroot.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];
}
numbers_add_oref(tmaroot, mergeid);
} else
delete store[13];
var sstref = parse_TSP_Reference(store[4][0].data);
numbers_iwa_doit(cfb, deps, sstref, function(sstroot) {
var sstdata = parse_shallow(sstroot.messages[0].data);
{
sstdata[3] = [];
SST.forEach(function(str, i) {
if (i == 0)
return;
sstdata[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(i) }],
[{ type: 0, data: write_varint49(1) }],
[{ type: 2, data: stru8(str) }]
]) });
});
}
sstroot.messages[0].data = write_shallow(sstdata);
});
}
pb[4][0].data = write_shallow(store);
}

615
xlsx.mjs generated

@ -7953,7 +7953,7 @@ function sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {
var cp = +dbf_reverse_map[/*::String(*/current_codepage/*::)*/] || 0x03;
h.write_shift(4, 0x00000000 | (cp<<8));
if(dbf_codepage_map[cp] != +o.codepage) {
console.error("DBF Unsupported codepage " + current_codepage + ", using 1252");
if(o.codepage) console.error("DBF Unsupported codepage " + current_codepage + ", using 1252");
current_codepage = 1252;
}
@ -8220,7 +8220,7 @@ var SYLK = /*#__PURE__*/(function() {
case 'b': o += cell.v ? "TRUE" : "FALSE"; break;
case 'e': o += cell.w || cell.v; break;
case 'd': o += '"' + (cell.w || cell.v) + '"'; break;
case 's': o += '"' + cell.v.replace(/"/g,"").replace(/;/g, ";;") + '"'; break;
case 's': o += '"' + (cell.v == null ? "" : String(cell.v)).replace(/"/g,"").replace(/;/g, ";;") + '"'; break;
}
return o;
}
@ -10000,6 +10000,7 @@ function write_sst_xml(sst/*:SST*/, opts)/*:string*/ {
else {
sitag += "<t";
if(!s.t) s.t = "";
if(typeof s.t !== "string") s.t = String(s.t);
if(s.t.match(straywsregex)) sitag += ' xml:space="preserve"';
sitag += ">" + escapexml(s.t) + "</t>";
}
@ -15538,7 +15539,10 @@ function write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string
var ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:"array", ref:cell.F} : null;
v = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : "");
}
if(cell.l) ws['!links'].push([ref, cell.l]);
if(cell.l) {
cell.l.display = escapexml(vv);
ws['!links'].push([ref, cell.l]);
}
if(cell.D) o.cm = 1;
return writextag('c', v, o);
}
@ -15848,6 +15852,7 @@ function write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {
}
if((relc = l[1].Target.indexOf("#")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));
if(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);
rel.display = l[1].display;
o[o.length] = writextag("hyperlink",null,rel);
});
o[o.length] = "</hyperlinks>";
@ -16152,9 +16157,10 @@ function parse_BrtCellSt(data) {
return [cell, value, 'str'];
}
function write_BrtCellSt(cell, ncell, o) {
var data = cell.v == null ? "" : String(cell.v);
if(o == null) o = new_buf(12 + 4 * cell.v.length);
write_XLSBCell(ncell, o);
write_XLWideString(cell.v, o);
write_XLWideString(data, o);
return o.length > o.l ? o.slice(0, o.l) : o;
}
function parse_BrtShortSt(data) {
@ -16163,9 +16169,10 @@ function parse_BrtShortSt(data) {
return [cell, value, 'str'];
}
function write_BrtShortSt(cell, ncell, o) {
if(o == null) o = new_buf(8 + 4 * cell.v.length);
var data = cell.v == null ? "" : String(cell.v);
if(o == null) o = new_buf(8 + 4 * data.length);
write_XLSBShortCell(ncell, o);
write_XLWideString(cell.v, o);
write_XLWideString(data, o);
return o.length > o.l ? o.slice(0, o.l) : o;
}
@ -16718,7 +16725,7 @@ function write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:num
switch(cell.t) {
case 's': case 'str':
if(opts.bookSST) {
vv = get_sst_id(opts.Strings, (cell.v/*:any*/), opts.revStrings);
vv = get_sst_id(opts.Strings, (cell.v == null ? "" : String(cell.v)/*:any*/), opts.revStrings);
o.t = "s"; o.v = vv;
if(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));
else write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));
@ -21264,7 +21271,7 @@ function write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:n
case 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;
/* TODO: codepage, sst */
case 's': case 'str':
write_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||"").slice(0,255)));
write_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, cell.v == null ? "" : String(cell.v).slice(0,255)));
return;
}
write_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));
@ -21388,9 +21395,9 @@ function write_ws_biff8_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:n
/* TODO: codepage, sst */
case 's': case 'str':
if(opts.bookSST) {
var isst = get_sst_id(opts.Strings, cell.v, opts.revStrings);
var isst = get_sst_id(opts.Strings, cell.v == null ? "" : String(cell.v), opts.revStrings);
write_biff_rec(ba, 0x00fd /* LabelSst */, write_LabelSst(R, C, isst, os, opts));
} else write_biff_rec(ba, 0x0204 /* Label */, write_Label(R, C, (cell.v||"").slice(0,255), os, opts));
} else write_biff_rec(ba, 0x0204 /* Label */, write_Label(R, C, (cell.v == null ? "" : String(cell.v)).slice(0,255), os, opts));
break;
default:
write_biff_rec(ba, 0x0201 /* Blank */, write_XLSCell(R, C, os));
@ -23274,6 +23281,39 @@ function varint_to_i32(buf) {
}
return i32;
}
function varint_to_u64(buf) {
var l = 0, lo = buf[l] & 127, hi = 0;
varint:
if (buf[l++] >= 128) {
lo |= (buf[l] & 127) << 7;
if (buf[l++] < 128)
break varint;
lo |= (buf[l] & 127) << 14;
if (buf[l++] < 128)
break varint;
lo |= (buf[l] & 127) << 21;
if (buf[l++] < 128)
break varint;
lo |= (buf[l] & 127) << 28;
hi = buf[l] >> 4 & 7;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 3;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 10;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 17;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 24;
if (buf[l++] < 128)
break varint;
hi |= (buf[l] & 127) << 31;
}
return [lo >>> 0, hi >>> 0];
}
function parse_shallow(buf) {
var out = [], ptr = [0];
while (ptr[0] < buf.length) {
@ -23810,10 +23850,12 @@ function write_new_storage(cell, sst) {
l += 8;
break;
case "s":
if (sst.indexOf(cell.v) == -1)
throw new Error("Value ".concat(cell.v, " missing from SST!"));
var s = cell.v == null ? "" : String(cell.v);
var isst = sst.indexOf(s);
if (isst == -1)
sst[isst = sst.length] = s;
out[1] = 3;
dv.setUint32(l, sst.indexOf(cell.v), true);
dv.setUint32(l, isst, true);
flags |= 8;
l += 4;
break;
@ -23840,10 +23882,12 @@ function write_old_storage(cell, sst) {
l += 8;
break;
case "s":
if (sst.indexOf(cell.v) == -1)
throw new Error("Value ".concat(cell.v, " missing from SST!"));
var s = cell.v == null ? "" : String(cell.v);
var isst = sst.indexOf(s);
if (isst == -1)
sst[isst = sst.length] = s;
out[2] = 3;
dv.setUint32(l, sst.indexOf(cell.v), true);
dv.setUint32(l, isst, true);
flags |= 16;
l += 4;
break;
@ -23877,6 +23921,22 @@ function write_TSP_Reference(idx) {
[{ type: 0, data: write_varint49(idx) }]
]);
}
function numbers_add_oref(iwa, ref) {
var _a;
var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];
var orefidx = orefs.indexOf(ref);
if (orefidx == -1) {
orefs.push(ref);
iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];
}
}
function numbers_del_oref(iwa, ref) {
var _a;
var orefs = ((_a = iwa.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(iwa.messages[0].meta[5][0].data) : [];
iwa.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs.filter(function(r) {
return r != ref;
})) }];
}
function parse_TST_TableDataList(M, root) {
var pb = parse_shallow(root.data);
var type = varint_to_i32(pb[1][0].data);
@ -23884,6 +23944,8 @@ function parse_TST_TableDataList(M, root) {
var data = [];
(entries || []).forEach(function(entry) {
var le = parse_shallow(entry.data);
if (!le[1])
return;
var key = varint_to_i32(le[1][0].data) >>> 0;
switch (type) {
case 1:
@ -24093,7 +24155,7 @@ function parse_TN_DocumentArchive(M, root, opts) {
return out;
}
function parse_numbers_iwa(cfb, opts) {
var _a, _b, _c, _d, _e, _f, _g, _h;
var _a, _b, _c, _d, _e, _f, _g;
var M = {}, indices = [];
cfb.FullPaths.forEach(function(p) {
if (p.match(/\.iwpv2/))
@ -24123,9 +24185,9 @@ function parse_numbers_iwa(cfb, opts) {
});
if (!indices.length)
throw new Error("File has no messages");
if (((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1e4)
if (((_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0].meta) == null ? void 0 : _b[1]) == null ? void 0 : _c[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1e4)
throw new Error("Pages documents are not supported");
var docroot = ((_h = (_g = (_f = (_e = M == null ? void 0 : M[1]) == null ? void 0 : _e[0]) == null ? void 0 : _f.meta) == null ? void 0 : _g[1]) == null ? void 0 : _h[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];
var docroot = ((_g = (_f = (_e = (_d = M == null ? void 0 : M[1]) == null ? void 0 : _d[0]) == null ? void 0 : _e.meta) == null ? void 0 : _f[1]) == null ? void 0 : _g[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];
if (!docroot)
indices.forEach(function(idx) {
M[idx].forEach(function(iwam) {
@ -24142,8 +24204,23 @@ function parse_numbers_iwa(cfb, opts) {
throw new Error("Cannot find Document root");
return parse_TN_DocumentArchive(M, docroot, opts);
}
function write_tile_row(tri, data, SST, wide) {
function write_TST_TileRowInfo(data, SST, wide) {
var _a, _b;
var tri = [
[],
[{ type: 0, data: write_varint49(0) }],
[{ type: 0, data: write_varint49(0) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(5) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(1) }]
];
if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))
throw "Mutation only works on post-BNC storages!";
var cnt = 0;
@ -24183,6 +24260,11 @@ function write_tile_row(tri, data, SST, wide) {
_celload = write_old_storage({ t: "b", v: data[C] }, SST);
break;
default:
if (data[C] instanceof Date) {
celload = write_new_storage({ t: "s", v: data[C].toISOString() }, SST);
_celload = write_old_storage({ t: "s", v: data[C].toISOString() }, SST);
break;
}
throw new Error("Unsupported value " + data[C]);
}
cell_storage.push(celload);
@ -24202,7 +24284,7 @@ function write_tile_row(tri, data, SST, wide) {
tri[6][0].data = u8concat(cell_storage);
tri[3][0].data = u8concat(_cell_storage);
tri[8] = [{ type: 0, data: write_varint49(wide ? 1 : 0) }];
return cnt;
return tri;
}
function write_iwam(type, payload) {
return {
@ -24270,19 +24352,20 @@ function write_numbers_iwa(wb, opts) {
if (!opts || !opts.numbers)
throw new Error("Must pass a `numbers` option -- check the README");
var cfb = CFB.read(opts.numbers, { type: "base64" });
var dependents = build_numbers_deps(cfb);
var cfb_DA = CFB.find(cfb, dependents[1].location);
if (!cfb_DA)
throw "Could not find ".concat(dependents[1].location, " in Numbers template");
var iwa_DA = parse_iwa_file(decompress_iwa_file(cfb_DA.content));
var docroot = iwa_DA.find(function(packet) {
return packet.id == 1;
});
var deps = build_numbers_deps(cfb);
var docroot = numbers_iwa_find(cfb, deps, 1);
if (docroot == null)
throw "Could not find message ".concat(1, " in Numbers template");
var sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);
if (sheetrefs.length > 1)
throw new Error("Template NUMBERS file must have exactly one sheet");
wb.SheetNames.forEach(function(name, idx) {
return write_numbers_ws(cfb, dependents, wb.Sheets[name], name, idx, sheetrefs[idx]);
if (idx >= 1) {
numbers_add_ws(cfb, deps, idx + 1);
docroot = numbers_iwa_find(cfb, deps, 1);
sheetrefs = mappa(parse_shallow(docroot.messages[0].data)[1], parse_TSP_Reference);
}
write_numbers_ws(cfb, deps, wb.Sheets[name], name, idx, sheetrefs[idx]);
});
return cfb;
}
@ -24308,9 +24391,364 @@ function numbers_iwa_find(cfb, deps, id) {
});
return ainfo;
}
function numbers_add_ws(cfb, deps, wsidx) {
var sheetref = -1, newsheetref = -1;
var remap = {};
numbers_iwa_doit(cfb, deps, 1, function(docroot, arch) {
var doc = parse_shallow(docroot.messages[0].data);
sheetref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);
newsheetref = get_unique_msgid({ deps: [1], location: deps[sheetref].location, type: 2 }, deps);
remap[sheetref] = newsheetref;
numbers_add_oref(docroot, newsheetref);
doc[1].push({ type: 2, data: write_TSP_Reference(newsheetref) });
var sheet = numbers_iwa_find(cfb, deps, sheetref);
sheet.id = newsheetref;
if (deps[1].location == deps[newsheetref].location)
arch.push(sheet);
else
numbers_iwa_doit(cfb, deps, newsheetref, function(_, x) {
return x.push(sheet);
});
docroot.messages[0].data = write_shallow(doc);
});
var tiaref = -1;
numbers_iwa_doit(cfb, deps, newsheetref, function(sheetroot, arch) {
var sa = parse_shallow(sheetroot.messages[0].data);
for (var i = 3; i <= 69; ++i)
delete sa[i];
var drawables = mappa(sa[2], parse_TSP_Reference);
drawables.forEach(function(n) {
return numbers_del_oref(sheetroot, n);
});
tiaref = get_unique_msgid({ deps: [newsheetref], location: deps[drawables[0]].location, type: deps[drawables[0]].type }, deps);
numbers_add_oref(sheetroot, tiaref);
remap[drawables[0]] = tiaref;
sa[2] = [{ type: 2, data: write_TSP_Reference(tiaref) }];
var tia = numbers_iwa_find(cfb, deps, drawables[0]);
tia.id = tiaref;
if (deps[drawables[0]].location == deps[newsheetref].location)
arch.push(tia);
else {
var loc2 = deps[newsheetref].location;
loc2 = loc2.replace(/^Root Entry\//, "");
loc2 = loc2.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
var parentidx = mlist[3].findIndex(function(m) {
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc2;
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc2)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(tiaref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
numbers_iwa_doit(cfb, deps, tiaref, function(_, x) {
return x.push(tia);
});
}
sheetroot.messages[0].data = write_shallow(sa);
});
var tmaref = -1;
numbers_iwa_doit(cfb, deps, tiaref, function(tiaroot, arch) {
var tia = parse_shallow(tiaroot.messages[0].data);
var da = parse_shallow(tia[1][0].data);
for (var i = 3; i <= 69; ++i)
delete da[i];
var dap = parse_TSP_Reference(da[2][0].data);
da[2][0].data = write_TSP_Reference(remap[dap]);
tia[1][0].data = write_shallow(da);
var oldtmaref = parse_TSP_Reference(tia[2][0].data);
numbers_del_oref(tiaroot, oldtmaref);
tmaref = get_unique_msgid({ deps: [tiaref], location: deps[oldtmaref].location, type: deps[oldtmaref].type }, deps);
numbers_add_oref(tiaroot, tmaref);
remap[oldtmaref] = tmaref;
tia[2][0].data = write_TSP_Reference(tmaref);
var tma = numbers_iwa_find(cfb, deps, oldtmaref);
tma.id = tmaref;
if (deps[tiaref].location == deps[tmaref].location)
arch.push(tma);
else
numbers_iwa_doit(cfb, deps, tmaref, function(_, x) {
return x.push(tma);
});
tiaroot.messages[0].data = write_shallow(tia);
});
var loc = deps[tmaref].location;
loc = loc.replace(/^Root Entry\//, "");
loc = loc.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, tmaref, function(tmaroot, arch) {
var _a, _b;
var tma = parse_shallow(tmaroot.messages[0].data);
var uuid = u8str(tma[1][0].data), new_uuid = uuid.replace(/-[A-Z0-9]*/, "-".concat(wsidx.toString(16).padStart(4, "0")));
tma[1][0].data = stru8(new_uuid);
[12, 13, 29, 31, 32, 33, 39, 44, 47, 81, 82, 84].forEach(function(n) {
return delete tma[n];
});
if (tma[45]) {
var srrta = parse_shallow(tma[45][0].data);
var ref = parse_TSP_Reference(srrta[1][0].data);
numbers_del_oref(tmaroot, ref);
delete tma[45];
}
if (tma[70]) {
var hsoa = parse_shallow(tma[70][0].data);
(_a = hsoa[2]) == null ? void 0 : _a.forEach(function(item) {
var hsa = parse_shallow(item.data);
[2, 3].map(function(n) {
return hsa[n][0];
}).forEach(function(hseadata) {
var hsea = parse_shallow(hseadata.data);
if (!hsea[8])
return;
var ref2 = parse_TSP_Reference(hsea[8][0].data);
numbers_del_oref(tmaroot, ref2);
});
});
delete tma[70];
}
[
46,
30,
34,
35,
36,
38,
48,
49,
60,
61,
62,
63,
64,
71,
72,
73,
74,
75,
85,
86,
87,
88,
89
].forEach(function(n) {
if (!tma[n])
return;
var ref2 = parse_TSP_Reference(tma[n][0].data);
delete tma[n];
numbers_del_oref(tmaroot, ref2);
});
var store = parse_shallow(tma[4][0].data);
{
[2, 4, 5, 6, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22].forEach(function(n) {
var _a2;
if (!((_a2 = store[n]) == null ? void 0 : _a2[0]))
return;
var oldref = parse_TSP_Reference(store[n][0].data);
var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);
numbers_del_oref(tmaroot, oldref);
numbers_add_oref(tmaroot, newref);
remap[oldref] = newref;
var msg = numbers_iwa_find(cfb, deps, oldref);
msg.id = newref;
if (deps[oldref].location == deps[tmaref].location)
arch.push(msg);
else {
deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());
if (deps[newref].location == deps[oldref].location)
deps[newref].location = deps[newref].location.replace(/\.iwa/, "-".concat(newref, ".iwa"));
CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));
var newloc = deps[newref].location;
newloc = newloc.replace(/^Root Entry\//, "");
newloc = newloc.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
mlist[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }],
[{ type: 2, data: stru8(newloc.replace(/-.*$/, "")) }],
[{ type: 2, data: stru8(newloc) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[],
[],
[],
[],
[{ type: 0, data: write_varint49(0) }],
[],
[{ type: 0, data: write_varint49(0) }]
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a3, _b2;
var mm = parse_shallow(m.data);
if ((_a3 = mm[3]) == null ? void 0 : _a3[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
}
store[n][0].data = write_TSP_Reference(newref);
});
var row_headers = parse_shallow(store[1][0].data);
{
(_b = row_headers[2]) == null ? void 0 : _b.forEach(function(tspref) {
var oldref = parse_TSP_Reference(tspref.data);
var newref = get_unique_msgid({ deps: [tmaref], location: deps[oldref].location, type: deps[oldref].type }, deps);
numbers_del_oref(tmaroot, oldref);
numbers_add_oref(tmaroot, newref);
remap[oldref] = newref;
var msg = numbers_iwa_find(cfb, deps, oldref);
msg.id = newref;
if (deps[oldref].location == deps[tmaref].location) {
arch.push(msg);
} else {
deps[newref].location = deps[oldref].location.replace(oldref.toString(), newref.toString());
if (deps[newref].location == deps[oldref].location)
deps[newref].location = deps[newref].location.replace(/\.iwa/, "-".concat(newref, ".iwa"));
CFB.utils.cfb_add(cfb, deps[newref].location, compress_iwa_file(write_iwa_file([msg])));
var newloc = deps[newref].location;
newloc = newloc.replace(/^Root Entry\//, "");
newloc = newloc.replace(/^Index\//, "").replace(/\.iwa$/, "");
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
mlist[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }],
[{ type: 2, data: stru8(newloc.replace(/-.*$/, "")) }],
[{ type: 2, data: stru8(newloc) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[],
[],
[],
[],
[{ type: 0, data: write_varint49(0) }],
[],
[{ type: 0, data: write_varint49(0) }]
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newref + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(newref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
}
tspref.data = write_TSP_Reference(newref);
});
}
store[1][0].data = write_shallow(row_headers);
var tiles = parse_shallow(store[3][0].data);
{
tiles[1].forEach(function(t) {
var tst = parse_shallow(t.data);
var oldtileref = parse_TSP_Reference(tst[2][0].data);
var newtileref = remap[oldtileref];
if (!remap[oldtileref]) {
newtileref = get_unique_msgid({ deps: [tmaref], location: "", type: deps[oldtileref].type }, deps);
deps[newtileref].location = "Root Entry/Index/Tables/Tile-".concat(newtileref, ".iwa");
remap[oldtileref] = newtileref;
var oldtile = numbers_iwa_find(cfb, deps, oldtileref);
oldtile.id = newtileref;
numbers_del_oref(tmaroot, oldtileref);
numbers_add_oref(tmaroot, newtileref);
CFB.utils.cfb_add(cfb, "/Index/Tables/Tile-".concat(newtileref, ".iwa"), compress_iwa_file(write_iwa_file([oldtile])));
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
mlist[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(newtileref) }],
[{ type: 2, data: stru8("Tables/Tile") }],
[{ type: 2, data: stru8("Tables/Tile-".concat(newtileref)) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[{ type: 2, data: new Uint8Array([2, 0, 0]) }],
[],
[],
[],
[],
[{ type: 0, data: write_varint49(0) }],
[],
[{ type: 0, data: write_varint49(0) }]
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileref + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
var parent = parse_shallow(mlist[3][parentidx].data);
if (!parent[6])
parent[6] = [];
parent[6].push({
type: 2,
data: write_shallow([
[],
[{ type: 0, data: write_varint49(newtileref) }]
])
});
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
}
tst[2][0].data = write_TSP_Reference(newtileref);
t.data = write_shallow(tst);
});
}
store[3][0].data = write_shallow(tiles);
}
tma[4][0].data = write_shallow(store);
tmaroot.messages[0].data = write_shallow(tma);
});
}
function write_numbers_ws(cfb, deps, ws, wsname, sheetidx, rootref) {
if (sheetidx >= 1)
return console.error("The Numbers writer currently writes only the first table");
var drawables = [];
numbers_iwa_doit(cfb, deps, rootref, function(docroot) {
var sheetref = parse_shallow(docroot.messages[0].data);
@ -24328,7 +24766,6 @@ function write_numbers_ws(cfb, deps, ws, wsname, sheetidx, rootref) {
}
var USE_WIDE_ROWS = true;
function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
var _a, _b;
var range = decode_range(ws["!ref"]);
range.s.r = range.s.c = 0;
var trunc = false;
@ -24343,15 +24780,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
if (trunc)
console.error("Truncating to ".concat(encode_range(range)));
var data = sheet_to_json(ws, { range: range, header: 1 });
var SST = ["~Sh33tJ5~"], SST_set = new Set(SST);
data.forEach(function(row) {
return row.forEach(function(cell) {
if (typeof cell == "string" && !SST_set.has(cell)) {
SST.push(cell);
SST_set.add(cell);
}
});
});
var SST = ["~Sh33tJ5~"];
var loc = deps[tmaref].location;
loc = loc.replace(/^Root Entry\//, "");
loc = loc.replace(/^Index\//, "").replace(/\.iwa$/, "");
@ -24364,9 +24793,9 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
{
var row_header_ref = parse_TSP_Reference(parse_shallow(store[1][0].data)[2][0].data);
numbers_iwa_doit(cfb, deps, row_header_ref, function(rowhead, _x) {
var _a2;
var _a;
var base_bucket = parse_shallow(rowhead.messages[0].data);
if ((_a2 = base_bucket == null ? void 0 : base_bucket[2]) == null ? void 0 : _a2[0])
if ((_a = base_bucket == null ? void 0 : base_bucket[2]) == null ? void 0 : _a[0])
for (var R2 = 0; R2 < data.length; ++R2) {
var _bucket = parse_shallow(base_bucket[2][0].data);
_bucket[1][0].data = write_varint49(R2);
@ -24386,22 +24815,6 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
}
colhead.messages[0].data = write_shallow(base_bucket);
});
var sstref = parse_TSP_Reference(store[4][0].data);
numbers_iwa_doit(cfb, deps, sstref, function(sstroot) {
var sstdata = parse_shallow(sstroot.messages[0].data);
{
sstdata[3] = [];
SST.forEach(function(str, i) {
sstdata[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(i) }],
[{ type: 0, data: write_varint49(1) }],
[{ type: 2, data: stru8(str) }]
]) });
});
}
sstroot.messages[0].data = write_shallow(sstdata);
});
var rbtree = parse_shallow(store[9][0].data);
rbtree[1] = [];
var tilestore = parse_shallow(store[3][0].data);
@ -24409,25 +24822,27 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
var tstride = 256;
tilestore[2] = [{ type: 0, data: write_varint49(tstride) }];
var tileref = parse_TSP_Reference(parse_shallow(tilestore[1][0].data)[2][0].data);
var save_token = 0;
var save_token = function() {
var metadata = numbers_iwa_find(cfb, deps, 2);
var mlist = parse_shallow(metadata.messages[0].data);
var mlst = mlist[3].filter(function(m) {
return parse_varint49(parse_shallow(m.data)[1][0].data) == tileref;
});
return (mlst == null ? void 0 : mlst.length) ? parse_varint49(parse_shallow(mlst[0].data)[12][0].data) : 0;
}();
{
CFB.utils.cfb_del(cfb, deps[tileref].location);
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
var lst = mlist[3].filter(function(m) {
return parse_varint49(parse_shallow(m.data)[1][0].data) == tileref;
});
if (lst && lst.length > 0)
save_token = parse_varint49(parse_shallow(lst[0].data)[12][0].data);
mlist[3] = mlist[3].filter(function(m) {
return parse_varint49(parse_shallow(m.data)[1][0].data) != tileref;
});
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
@ -24440,6 +24855,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
numbers_del_oref(tmaroot, tileref);
}
tilestore[1] = [];
var ntiles = Math.ceil((range.e.r + 1) / tstride);
@ -24462,22 +24878,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
[{ type: 0, data: write_varint49(USE_WIDE_ROWS ? 1 : 0) }]
];
for (var R = tidx * tstride; R <= Math.min(range.e.r, (tidx + 1) * tstride - 1); ++R) {
var tilerow = [
[],
[{ type: 0, data: write_varint49(0) }],
[{ type: 0, data: write_varint49(0) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(5) }],
[{ type: 2, data: new Uint8Array([]) }],
[{ type: 2, data: new Uint8Array(Array.from({ length: 510 }, function() {
return 255;
})) }],
[{ type: 0, data: write_varint49(1) }]
];
write_tile_row(tilerow, data[R], SST, USE_WIDE_ROWS);
var tilerow = write_TST_TileRowInfo(data[R], SST, USE_WIDE_ROWS);
tilerow[1][0].data = write_varint49(R - tidx * tstride);
tiledata[5].push({ data: write_shallow(tilerow), type: 2 });
}
@ -24511,11 +24912,11 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
]) });
mlist[1] = [{ type: 0, data: write_varint49(Math.max(newtileid + 1, parse_varint49(mlist[1][0].data))) }];
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
@ -24532,12 +24933,7 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
var orefs = ((_a = tmaroot.messages[0].meta[5]) == null ? void 0 : _a[0]) ? parse_packed_varints(tmaroot.messages[0].meta[5][0].data) : [];
var orefidx = orefs.indexOf(newtileid);
if (orefidx == -1) {
orefs[orefidx = orefs.length] = newtileid;
tmaroot.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];
}
numbers_add_oref(tmaroot, newtileid);
rbtree[1].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(tidx * tstride) }],
@ -24577,11 +24973,11 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
numbers_iwa_doit(cfb, deps, 2, function(ai) {
var mlist = parse_shallow(ai.messages[0].data);
var parentidx = mlist[3].findIndex(function(m) {
var _a2, _b2;
var _a, _b;
var mm = parse_shallow(m.data);
if ((_a2 = mm[3]) == null ? void 0 : _a2[0])
if ((_a = mm[3]) == null ? void 0 : _a[0])
return u8str(mm[3][0].data) == loc;
if (((_b2 = mm[2]) == null ? void 0 : _b2[0]) && u8str(mm[2][0].data) == loc)
if (((_b = mm[2]) == null ? void 0 : _b[0]) && u8str(mm[2][0].data) == loc)
return true;
return false;
});
@ -24598,14 +24994,27 @@ function write_numbers_tma(cfb, deps, ws, tmaroot, tmafile, tmaref) {
mlist[3][parentidx].data = write_shallow(parent);
ai.messages[0].data = write_shallow(mlist);
});
orefs = ((_b = tmaroot.messages[0].meta[5]) == null ? void 0 : _b[0]) ? parse_packed_varints(tmaroot.messages[0].meta[5][0].data) : [];
orefidx = orefs.indexOf(mergeid);
if (orefidx == -1) {
orefs[orefidx = orefs.length] = mergeid;
tmaroot.messages[0].meta[5] = [{ type: 2, data: write_packed_varints(orefs) }];
}
numbers_add_oref(tmaroot, mergeid);
} else
delete store[13];
var sstref = parse_TSP_Reference(store[4][0].data);
numbers_iwa_doit(cfb, deps, sstref, function(sstroot) {
var sstdata = parse_shallow(sstroot.messages[0].data);
{
sstdata[3] = [];
SST.forEach(function(str, i) {
if (i == 0)
return;
sstdata[3].push({ type: 2, data: write_shallow([
[],
[{ type: 0, data: write_varint49(i) }],
[{ type: 0, data: write_varint49(1) }],
[{ type: 2, data: stru8(str) }]
]) });
});
}
sstroot.messages[0].data = write_shallow(sstdata);
});
}
pb[4][0].data = write_shallow(store);
}