forked from sheetjs/sheetjs
stringify all 's' cell values (fixes #2795)
This commit is contained in:
parent
4ae4f0fad9
commit
654d6f98c3
@ -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
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
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);
|
||||
|
615
xlsx.flow.js
615
xlsx.flow.js
@ -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
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
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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user