ooxml-core 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{PptxHandler-SJTINPU4.mjs → PptxHandler-VQQS4VS6.mjs} +2 -2
- package/dist/automation/index.cjs +1059 -328
- package/dist/automation/index.mjs +1059 -328
- package/dist/chart/bar-cluster-geometry.d.ts +6 -0
- package/dist/chart/bar-cluster-geometry.d.ts.map +1 -1
- package/dist/chart/index.cjs +5 -2
- package/dist/chart/index.mjs +5 -3
- package/dist/chart/render/chart-spacing.d.ts.map +1 -1
- package/dist/{chunk-TEOAOAIF.mjs → chunk-5U27IVB7.mjs} +3 -3
- package/dist/{chunk-VYTA2OUN.mjs → chunk-5VLNF4OX.mjs} +1 -1
- package/dist/{chunk-CQQAPUAG.mjs → chunk-V2BIGIH4.mjs} +11 -9
- package/dist/{chunk-FI4RSJ24.mjs → chunk-XBNSBDNT.mjs} +1 -1
- package/dist/{chunk-XCZ7U3GZ.mjs → chunk-XSFHGZFH.mjs} +11 -9
- package/dist/docx/index.cjs +4 -2
- package/dist/docx/index.mjs +4 -2
- package/dist/docx/layout/index.cjs +4 -2
- package/dist/docx/layout/index.mjs +4 -2
- package/dist/docx/ui/index.cjs +4 -2
- package/dist/docx/ui/index.mjs +4 -2
- package/dist/index.cjs +5 -2
- package/dist/index.mjs +5 -2
- package/dist/pptx/automation/index.cjs +27 -17
- package/dist/pptx/automation/index.mjs +5 -5
- package/dist/pptx/chunks/index-EZJZ7USt.d.ts.map +1 -1
- package/dist/pptx/cli/index.cjs +27 -17
- package/dist/pptx/cli/index.mjs +4 -4
- package/dist/pptx/converter/index.mjs +2 -2
- package/dist/pptx/index.cjs +27 -17
- package/dist/pptx/index.mjs +5 -5
- package/dist/teams/index.cjs +157 -82
- package/dist/teams/index.mjs +157 -82
- package/dist/xlsx/edit/context.d.ts +3 -1
- package/dist/xlsx/edit/context.d.ts.map +1 -1
- package/dist/xlsx/edit/history.d.ts +18 -0
- package/dist/xlsx/edit/history.d.ts.map +1 -1
- package/dist/xlsx/edit/session-calc.d.ts +30 -8
- package/dist/xlsx/edit/session-calc.d.ts.map +1 -1
- package/dist/xlsx/edit/session.d.ts.map +1 -1
- package/dist/xlsx/edit/sheets.d.ts.map +1 -1
- package/dist/xlsx/edit/types.d.ts +23 -3
- package/dist/xlsx/edit/types.d.ts.map +1 -1
- package/dist/xlsx/formula/engine-core.d.ts.map +1 -1
- package/dist/xlsx/formula/engine-host.d.ts +6 -2
- package/dist/xlsx/formula/engine-host.d.ts.map +1 -1
- package/dist/xlsx/formula/engine-prepare.d.ts +33 -0
- package/dist/xlsx/formula/engine-prepare.d.ts.map +1 -0
- package/dist/xlsx/formula/engine-structure.d.ts +40 -0
- package/dist/xlsx/formula/engine-structure.d.ts.map +1 -0
- package/dist/xlsx/formula/engine-types.d.ts +26 -0
- package/dist/xlsx/formula/engine-types.d.ts.map +1 -1
- package/dist/xlsx/formula/engine.d.ts.map +1 -1
- package/dist/xlsx/formula/formula-shape.d.ts +28 -0
- package/dist/xlsx/formula/formula-shape.d.ts.map +1 -0
- package/dist/xlsx/formula/graph-index.d.ts +3 -1
- package/dist/xlsx/formula/graph-index.d.ts.map +1 -1
- package/dist/xlsx/formula/graph.d.ts +5 -0
- package/dist/xlsx/formula/graph.d.ts.map +1 -1
- package/dist/xlsx/formula/lexemes.d.ts.map +1 -1
- package/dist/xlsx/formula/parse-cache.d.ts +9 -0
- package/dist/xlsx/formula/parse-cache.d.ts.map +1 -0
- package/dist/xlsx/formula/parser.d.ts +3 -0
- package/dist/xlsx/formula/parser.d.ts.map +1 -1
- package/dist/xlsx/formula/ref-text.d.ts +14 -0
- package/dist/xlsx/formula/ref-text.d.ts.map +1 -0
- package/dist/xlsx/formula/references.d.ts.map +1 -1
- package/dist/xlsx/formula/shift-formula.d.ts +19 -0
- package/dist/xlsx/formula/shift-formula.d.ts.map +1 -0
- package/dist/xlsx/formula/shift-graph.d.ts +42 -0
- package/dist/xlsx/formula/shift-graph.d.ts.map +1 -0
- package/dist/xlsx/formula/transform.d.ts +2 -23
- package/dist/xlsx/formula/transform.d.ts.map +1 -1
- package/dist/xlsx/index.cjs +1069 -329
- package/dist/xlsx/index.mjs +1069 -330
- package/dist/xlsx/layout/index.d.ts +1 -1
- package/dist/xlsx/layout/index.d.ts.map +1 -1
- package/dist/xlsx/layout/sheet-queries.d.ts +7 -0
- package/dist/xlsx/layout/sheet-queries.d.ts.map +1 -1
- package/dist/xlsx/load/index.cjs +152 -90
- package/dist/xlsx/load/index.mjs +152 -90
- package/dist/xlsx/ui/index.cjs +1071 -340
- package/dist/xlsx/ui/index.mjs +1071 -340
- package/package.json +1 -1
package/dist/teams/index.cjs
CHANGED
|
@@ -5165,7 +5165,7 @@ var init_lexemes = __esm({
|
|
|
5165
5165
|
CELL_RE = /^(\$?)([A-Za-z]{1,3})(\$?)(\d{1,7})/;
|
|
5166
5166
|
COLS_RE = /^(\$?)([A-Za-z]{1,3}):(\$?)([A-Za-z]{1,3})/;
|
|
5167
5167
|
ROWS_RE = /^(\$?)(\d{1,7}):(\$?)(\d{1,7})/;
|
|
5168
|
-
NUMBER_RE = /^(?:\d
|
|
5168
|
+
NUMBER_RE = /^(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?/;
|
|
5169
5169
|
sticky = (re) => new RegExp(re.source.replace(/^\^/, ""), "y");
|
|
5170
5170
|
CELL_AT = sticky(CELL_RE);
|
|
5171
5171
|
COLS_AT = sticky(COLS_RE);
|
|
@@ -5362,7 +5362,7 @@ var init_tokenizer = __esm({
|
|
|
5362
5362
|
}
|
|
5363
5363
|
});
|
|
5364
5364
|
|
|
5365
|
-
// xlsx/formula/
|
|
5365
|
+
// xlsx/formula/ref-text.ts
|
|
5366
5366
|
function safeTokens(formula) {
|
|
5367
5367
|
try {
|
|
5368
5368
|
return tokenize(formula);
|
|
@@ -5376,24 +5376,37 @@ function formatRefSpec(spec2) {
|
|
|
5376
5376
|
if (spec2.kind === "cell") return a2;
|
|
5377
5377
|
return `${a2}:${cornerText(spec2.end, spec2.kind)}`;
|
|
5378
5378
|
}
|
|
5379
|
-
function
|
|
5379
|
+
function rewriteRef(token, ref) {
|
|
5380
5380
|
const prefix = token.prefix?.text ?? "";
|
|
5381
5381
|
if (!ref) return `${prefix}#REF!`;
|
|
5382
5382
|
return `${prefix}${formatRefSpec(ref)}${token.spill ? "#" : ""}`;
|
|
5383
5383
|
}
|
|
5384
|
-
function
|
|
5385
|
-
|
|
5386
|
-
|
|
5387
|
-
|
|
5388
|
-
|
|
5389
|
-
|
|
5384
|
+
function prefixText(prefix) {
|
|
5385
|
+
const sheets = prefix.sheet2 !== void 0 ? `${prefix.sheet}:${prefix.sheet2}` : prefix.sheet;
|
|
5386
|
+
const book = prefix.book !== void 0 ? `[${prefix.book}]` : "";
|
|
5387
|
+
const quote2 = needsQuote(prefix.sheet) || prefix.sheet2 !== void 0 && needsQuote(prefix.sheet2);
|
|
5388
|
+
return quote2 ? `'${(book + sheets).replace(/'/g, "''")}'!` : `${book}${sheets}!`;
|
|
5389
|
+
}
|
|
5390
|
+
var cornerText, sameSpec, needsQuote;
|
|
5391
|
+
var init_ref_text = __esm({
|
|
5392
|
+
"xlsx/formula/ref-text.ts"() {
|
|
5393
|
+
init_address();
|
|
5394
|
+
init_ast();
|
|
5395
|
+
init_tokenizer();
|
|
5396
|
+
cornerText = (c2, kind) => {
|
|
5397
|
+
if (kind === "cols") return `${c2.colAbs ? "$" : ""}${columnLabel(c2.col)}`;
|
|
5398
|
+
if (kind === "rows") return `${c2.rowAbs ? "$" : ""}${c2.row + 1}`;
|
|
5399
|
+
return `${c2.colAbs ? "$" : ""}${columnLabel(c2.col)}${c2.rowAbs ? "$" : ""}${c2.row + 1}`;
|
|
5400
|
+
};
|
|
5401
|
+
sameSpec = (a2, b) => a2.kind === b.kind && a2.start.row === b.start.row && a2.start.col === b.start.col && a2.end.row === b.end.row && a2.end.col === b.end.col;
|
|
5402
|
+
needsQuote = (name) => !/^[A-Za-z_¡-][A-Za-z0-9_.¡-]*$/.test(name) || /^[A-Za-z]{1,3}\d+$/.test(name) || /^(?:R\d*C?\d*|C\d*)$/i.test(name) || /^(?:TRUE|FALSE)$/i.test(name);
|
|
5390
5403
|
}
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
|
|
5394
|
-
|
|
5395
|
-
|
|
5396
|
-
|
|
5404
|
+
});
|
|
5405
|
+
|
|
5406
|
+
// xlsx/formula/shift-formula.ts
|
|
5407
|
+
function remember(text, template) {
|
|
5408
|
+
if (templates.size >= MAX_TEMPLATES) templates.clear();
|
|
5409
|
+
templates.set(text, template);
|
|
5397
5410
|
}
|
|
5398
5411
|
function mergeSpacedAreas(tokens2) {
|
|
5399
5412
|
const out = [];
|
|
@@ -5420,83 +5433,141 @@ function mergeSpacedAreas(tokens2) {
|
|
|
5420
5433
|
}
|
|
5421
5434
|
return out;
|
|
5422
5435
|
}
|
|
5423
|
-
function
|
|
5424
|
-
|
|
5436
|
+
function templateOf(formula) {
|
|
5437
|
+
const cached = templates.get(formula);
|
|
5438
|
+
if (cached !== void 0) return cached;
|
|
5425
5439
|
const raw2 = safeTokens(formula);
|
|
5426
|
-
|
|
5427
|
-
|
|
5428
|
-
|
|
5429
|
-
|
|
5430
|
-
|
|
5431
|
-
|
|
5432
|
-
|
|
5433
|
-
|
|
5434
|
-
|
|
5435
|
-
|
|
5436
|
-
|
|
5437
|
-
|
|
5438
|
-
|
|
5439
|
-
|
|
5440
|
-
|
|
5441
|
-
|
|
5442
|
-
|
|
5443
|
-
|
|
5444
|
-
|
|
5445
|
-
if (shifted) {
|
|
5446
|
-
const [a2, b] = shifted;
|
|
5447
|
-
const nlo = isRow ? { ...lo, row: a2 } : { ...lo, col: a2 };
|
|
5448
|
-
const nhi = isRow ? { ...hi, row: b } : { ...hi, col: b };
|
|
5449
|
-
next = { kind: ref.kind, start: startFirst ? nlo : nhi, end: startFirst ? nhi : nlo };
|
|
5450
|
-
if (ref.kind === "cell") next.end = next.start;
|
|
5440
|
+
let template = null;
|
|
5441
|
+
if (raw2) {
|
|
5442
|
+
template = [];
|
|
5443
|
+
let literal = "";
|
|
5444
|
+
for (const token of mergeSpacedAreas(raw2)) {
|
|
5445
|
+
if (token.kind !== "ref" && !(token.kind === "name" && token.prefix)) {
|
|
5446
|
+
literal += token.text;
|
|
5447
|
+
continue;
|
|
5448
|
+
}
|
|
5449
|
+
if (literal) template.push(literal);
|
|
5450
|
+
literal = "";
|
|
5451
|
+
const part = { kind: token.kind, text: token.text };
|
|
5452
|
+
if (token.prefix) {
|
|
5453
|
+
part.prefix = token.prefix;
|
|
5454
|
+
if (token.prefix.book === void 0) part.sheet = token.prefix.sheet.toLowerCase();
|
|
5455
|
+
}
|
|
5456
|
+
if (token.ref) part.ref = token.ref;
|
|
5457
|
+
if (token.spill) part.spill = true;
|
|
5458
|
+
template.push(part);
|
|
5451
5459
|
}
|
|
5452
|
-
if (
|
|
5453
|
-
token.text = rewrite(token, next);
|
|
5460
|
+
if (literal) template.push(literal);
|
|
5454
5461
|
}
|
|
5455
|
-
|
|
5462
|
+
remember(formula, template);
|
|
5463
|
+
return template;
|
|
5456
5464
|
}
|
|
5457
|
-
function
|
|
5458
|
-
const
|
|
5459
|
-
|
|
5460
|
-
|
|
5461
|
-
|
|
5465
|
+
function rewriteTemplate(formula, rewrite2) {
|
|
5466
|
+
const template = templateOf(formula);
|
|
5467
|
+
if (!template) return formula;
|
|
5468
|
+
let next;
|
|
5469
|
+
for (let i = 0; i < template.length; i++) {
|
|
5470
|
+
const part = template[i];
|
|
5471
|
+
if (typeof part === "string") continue;
|
|
5472
|
+
const changed = rewrite2(part);
|
|
5473
|
+
if (!changed) continue;
|
|
5474
|
+
next ??= template.slice();
|
|
5475
|
+
next[i] = changed;
|
|
5476
|
+
}
|
|
5477
|
+
if (!next) return formula;
|
|
5478
|
+
const text = next.map((part) => typeof part === "string" ? part : part.text).join("");
|
|
5479
|
+
remember(text, next);
|
|
5480
|
+
return text;
|
|
5481
|
+
}
|
|
5482
|
+
function shiftInterval(a2, b, at, count2, max) {
|
|
5483
|
+
if (count2 > 0) {
|
|
5484
|
+
const na2 = a2 >= at ? a2 + count2 : a2;
|
|
5485
|
+
const nb2 = b >= at ? b + count2 : b;
|
|
5486
|
+
if (nb2 > max) return na2 > max ? void 0 : [na2, max];
|
|
5487
|
+
return [na2, nb2];
|
|
5488
|
+
}
|
|
5489
|
+
const n = -count2;
|
|
5490
|
+
const last = at + n - 1;
|
|
5491
|
+
if (a2 >= at && b <= last) return void 0;
|
|
5492
|
+
const na = a2 < at ? a2 : a2 <= last ? at : a2 - n;
|
|
5493
|
+
const nb = b < at ? b : b <= last ? at - 1 : b - n;
|
|
5494
|
+
return [na, nb];
|
|
5495
|
+
}
|
|
5496
|
+
function shiftRef(ref, spec2) {
|
|
5497
|
+
const isRow = spec2.axis === "row";
|
|
5498
|
+
if (isRow && ref.kind === "cols" || !isRow && ref.kind === "rows") return ref;
|
|
5499
|
+
const startFirst = isRow ? ref.start.row <= ref.end.row : ref.start.col <= ref.end.col;
|
|
5500
|
+
const lo = startFirst ? ref.start : ref.end;
|
|
5501
|
+
const hi = startFirst ? ref.end : ref.start;
|
|
5502
|
+
const shifted = shiftInterval(
|
|
5503
|
+
isRow ? lo.row : lo.col,
|
|
5504
|
+
isRow ? hi.row : hi.col,
|
|
5505
|
+
spec2.at,
|
|
5506
|
+
spec2.count,
|
|
5507
|
+
isRow ? MAX_ROW : MAX_COL
|
|
5508
|
+
);
|
|
5509
|
+
if (!shifted) return void 0;
|
|
5510
|
+
const [a2, b] = shifted;
|
|
5511
|
+
const nlo = isRow ? { ...lo, row: a2 } : { ...lo, col: a2 };
|
|
5512
|
+
const nhi = isRow ? { ...hi, row: b } : { ...hi, col: b };
|
|
5513
|
+
const next = {
|
|
5514
|
+
kind: ref.kind,
|
|
5515
|
+
start: startFirst ? nlo : nhi,
|
|
5516
|
+
end: startFirst ? nhi : nlo
|
|
5517
|
+
};
|
|
5518
|
+
if (ref.kind === "cell") next.end = next.start;
|
|
5519
|
+
return sameSpec(next, ref) ? ref : next;
|
|
5520
|
+
}
|
|
5521
|
+
function shiftFormula(formula, formulaSheet, spec2) {
|
|
5522
|
+
if (spec2.count === 0) return formula;
|
|
5523
|
+
const sheet = spec2.sheet.toLowerCase();
|
|
5524
|
+
const own = formulaSheet.toLowerCase() === sheet;
|
|
5525
|
+
return rewriteTemplate(formula, (part) => {
|
|
5526
|
+
if (part.kind !== "ref" || !part.ref || (part.prefix ? part.sheet !== sheet : !own))
|
|
5527
|
+
return void 0;
|
|
5528
|
+
const next = shiftRef(part.ref, spec2);
|
|
5529
|
+
if (next === part.ref) return void 0;
|
|
5530
|
+
const out = { kind: "ref", text: rewriteRef(part, next) };
|
|
5531
|
+
if (part.prefix) out.prefix = part.prefix;
|
|
5532
|
+
if (part.sheet !== void 0) out.sheet = part.sheet;
|
|
5533
|
+
if (next) out.ref = next;
|
|
5534
|
+
if (part.spill) out.spill = true;
|
|
5535
|
+
return out;
|
|
5536
|
+
});
|
|
5462
5537
|
}
|
|
5463
5538
|
function renameSheetInFormula(formula, oldName, newName) {
|
|
5464
|
-
const tokens2 = safeTokens(formula);
|
|
5465
|
-
if (!tokens2) return formula;
|
|
5466
5539
|
const lower2 = oldName.toLowerCase();
|
|
5467
|
-
|
|
5468
|
-
const prefix =
|
|
5469
|
-
if (!prefix ||
|
|
5470
|
-
const first2 =
|
|
5540
|
+
return rewriteTemplate(formula, (part) => {
|
|
5541
|
+
const prefix = part.prefix;
|
|
5542
|
+
if (!prefix || part.sheet === void 0) return void 0;
|
|
5543
|
+
const first2 = part.sheet === lower2;
|
|
5471
5544
|
const second = prefix.sheet2?.toLowerCase() === lower2;
|
|
5472
|
-
if (!first2 && !second)
|
|
5545
|
+
if (!first2 && !second) return void 0;
|
|
5473
5546
|
const renamed = { ...prefix, sheet: first2 ? newName : prefix.sheet };
|
|
5474
5547
|
if (prefix.sheet2 !== void 0) renamed.sheet2 = second ? newName : prefix.sheet2;
|
|
5475
5548
|
const text = prefixText(renamed);
|
|
5476
|
-
token.text = text + token.text.slice(prefix.text.length);
|
|
5477
5549
|
renamed.text = text;
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5550
|
+
const out = { ...part, text: text + part.text.slice(prefix.text.length) };
|
|
5551
|
+
out.prefix = renamed;
|
|
5552
|
+
out.sheet = renamed.sheet.toLowerCase();
|
|
5553
|
+
return out;
|
|
5554
|
+
});
|
|
5481
5555
|
}
|
|
5482
|
-
var
|
|
5556
|
+
var templates, MAX_TEMPLATES;
|
|
5557
|
+
var init_shift_formula = __esm({
|
|
5558
|
+
"xlsx/formula/shift-formula.ts"() {
|
|
5559
|
+
init_address();
|
|
5560
|
+
init_ref_text();
|
|
5561
|
+
templates = /* @__PURE__ */ new Map();
|
|
5562
|
+
MAX_TEMPLATES = 2e5;
|
|
5563
|
+
}
|
|
5564
|
+
});
|
|
5565
|
+
|
|
5566
|
+
// xlsx/formula/transform.ts
|
|
5483
5567
|
var init_transform = __esm({
|
|
5484
5568
|
"xlsx/formula/transform.ts"() {
|
|
5485
|
-
|
|
5486
|
-
|
|
5487
|
-
init_tokenizer();
|
|
5488
|
-
cornerText = (c2, kind) => {
|
|
5489
|
-
if (kind === "cols") return `${c2.colAbs ? "$" : ""}${columnLabel(c2.col)}`;
|
|
5490
|
-
if (kind === "rows") return `${c2.rowAbs ? "$" : ""}${c2.row + 1}`;
|
|
5491
|
-
return `${c2.colAbs ? "$" : ""}${columnLabel(c2.col)}${c2.rowAbs ? "$" : ""}${c2.row + 1}`;
|
|
5492
|
-
};
|
|
5493
|
-
sameSpec = (a2, b) => a2.kind === b.kind && a2.start.row === b.start.row && a2.start.col === b.start.col && a2.end.row === b.end.row && a2.end.col === b.end.col;
|
|
5494
|
-
sheetMatches = (prefix, formulaSheet, sheet) => {
|
|
5495
|
-
if (prefix?.book !== void 0) return false;
|
|
5496
|
-
const name = prefix ? prefix.sheet : formulaSheet;
|
|
5497
|
-
return name.toLowerCase() === sheet.toLowerCase();
|
|
5498
|
-
};
|
|
5499
|
-
needsQuote = (name) => !/^[A-Za-z_\u00A1-\uFFFF][A-Za-z0-9_.\u00A1-\uFFFF]*$/.test(name) || /^[A-Za-z]{1,3}\d+$/.test(name) || /^(?:R\d*C?\d*|C\d*)$/i.test(name) || /^(?:TRUE|FALSE)$/i.test(name);
|
|
5569
|
+
init_ref_text();
|
|
5570
|
+
init_shift_formula();
|
|
5500
5571
|
}
|
|
5501
5572
|
});
|
|
5502
5573
|
|
|
@@ -5587,7 +5658,7 @@ var init_formula_storage = __esm({
|
|
|
5587
5658
|
});
|
|
5588
5659
|
|
|
5589
5660
|
// xlsx/read/formula-text.ts
|
|
5590
|
-
function
|
|
5661
|
+
function rewrite(formula, visit) {
|
|
5591
5662
|
const out = [];
|
|
5592
5663
|
let i = 0;
|
|
5593
5664
|
while (i < formula.length) {
|
|
@@ -5630,7 +5701,7 @@ function rewrite2(formula, visit) {
|
|
|
5630
5701
|
}
|
|
5631
5702
|
function stripFuturePrefixes(formula) {
|
|
5632
5703
|
if (!formula.includes("_xl")) return formula;
|
|
5633
|
-
const plain2 =
|
|
5704
|
+
const plain2 = rewrite(formula, (token, next, out) => {
|
|
5634
5705
|
if (!next.startsWith("(")) return false;
|
|
5635
5706
|
const stripped = token.replace(/^(_xlfn\.)?(_xlws\.)?/i, "");
|
|
5636
5707
|
if (stripped === token) return false;
|
|
@@ -5640,7 +5711,7 @@ function stripFuturePrefixes(formula) {
|
|
|
5640
5711
|
return fromStoredSyntax(plain2);
|
|
5641
5712
|
}
|
|
5642
5713
|
function addFuturePrefixes(formula) {
|
|
5643
|
-
return
|
|
5714
|
+
return rewrite(toStoredSyntax(formula), (token, next, out) => {
|
|
5644
5715
|
if (!next.startsWith("(")) return false;
|
|
5645
5716
|
const upper2 = token.toUpperCase();
|
|
5646
5717
|
if (!FUTURE_FUNCTIONS.has(upper2)) return false;
|
|
@@ -6943,7 +7014,9 @@ var init_structured = __esm({
|
|
|
6943
7014
|
|
|
6944
7015
|
// xlsx/formula/parser.ts
|
|
6945
7016
|
function parseFormula(formula) {
|
|
6946
|
-
|
|
7017
|
+
return parseTokens(tokenize(formula));
|
|
7018
|
+
}
|
|
7019
|
+
function parseTokens(all2) {
|
|
6947
7020
|
const tokens2 = [];
|
|
6948
7021
|
const wsBefore = [];
|
|
6949
7022
|
let sawWs = false;
|
|
@@ -10584,8 +10657,10 @@ var init_financial = __esm({
|
|
|
10584
10657
|
|
|
10585
10658
|
// xlsx/formula/references.ts
|
|
10586
10659
|
function sheetIndex(host, name) {
|
|
10660
|
+
const sheets = host.workbook.sheets;
|
|
10661
|
+
for (let i = 0; i < sheets.length; i++) if (sheets[i]?.name === name) return i;
|
|
10587
10662
|
const lower2 = name.toLowerCase();
|
|
10588
|
-
return
|
|
10663
|
+
return sheets.findIndex((sheet) => sheet.name.toLowerCase() === lower2);
|
|
10589
10664
|
}
|
|
10590
10665
|
var init_references = __esm({
|
|
10591
10666
|
"xlsx/formula/references.ts"() {
|
package/dist/teams/index.mjs
CHANGED
|
@@ -5138,7 +5138,7 @@ var init_lexemes = __esm({
|
|
|
5138
5138
|
CELL_RE = /^(\$?)([A-Za-z]{1,3})(\$?)(\d{1,7})/;
|
|
5139
5139
|
COLS_RE = /^(\$?)([A-Za-z]{1,3}):(\$?)([A-Za-z]{1,3})/;
|
|
5140
5140
|
ROWS_RE = /^(\$?)(\d{1,7}):(\$?)(\d{1,7})/;
|
|
5141
|
-
NUMBER_RE = /^(?:\d
|
|
5141
|
+
NUMBER_RE = /^(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?/;
|
|
5142
5142
|
sticky = (re) => new RegExp(re.source.replace(/^\^/, ""), "y");
|
|
5143
5143
|
CELL_AT = sticky(CELL_RE);
|
|
5144
5144
|
COLS_AT = sticky(COLS_RE);
|
|
@@ -5335,7 +5335,7 @@ var init_tokenizer = __esm({
|
|
|
5335
5335
|
}
|
|
5336
5336
|
});
|
|
5337
5337
|
|
|
5338
|
-
// xlsx/formula/
|
|
5338
|
+
// xlsx/formula/ref-text.ts
|
|
5339
5339
|
function safeTokens(formula) {
|
|
5340
5340
|
try {
|
|
5341
5341
|
return tokenize(formula);
|
|
@@ -5349,24 +5349,37 @@ function formatRefSpec(spec2) {
|
|
|
5349
5349
|
if (spec2.kind === "cell") return a2;
|
|
5350
5350
|
return `${a2}:${cornerText(spec2.end, spec2.kind)}`;
|
|
5351
5351
|
}
|
|
5352
|
-
function
|
|
5352
|
+
function rewriteRef(token, ref) {
|
|
5353
5353
|
const prefix = token.prefix?.text ?? "";
|
|
5354
5354
|
if (!ref) return `${prefix}#REF!`;
|
|
5355
5355
|
return `${prefix}${formatRefSpec(ref)}${token.spill ? "#" : ""}`;
|
|
5356
5356
|
}
|
|
5357
|
-
function
|
|
5358
|
-
|
|
5359
|
-
|
|
5360
|
-
|
|
5361
|
-
|
|
5362
|
-
|
|
5357
|
+
function prefixText(prefix) {
|
|
5358
|
+
const sheets = prefix.sheet2 !== void 0 ? `${prefix.sheet}:${prefix.sheet2}` : prefix.sheet;
|
|
5359
|
+
const book = prefix.book !== void 0 ? `[${prefix.book}]` : "";
|
|
5360
|
+
const quote2 = needsQuote(prefix.sheet) || prefix.sheet2 !== void 0 && needsQuote(prefix.sheet2);
|
|
5361
|
+
return quote2 ? `'${(book + sheets).replace(/'/g, "''")}'!` : `${book}${sheets}!`;
|
|
5362
|
+
}
|
|
5363
|
+
var cornerText, sameSpec, needsQuote;
|
|
5364
|
+
var init_ref_text = __esm({
|
|
5365
|
+
"xlsx/formula/ref-text.ts"() {
|
|
5366
|
+
init_address();
|
|
5367
|
+
init_ast();
|
|
5368
|
+
init_tokenizer();
|
|
5369
|
+
cornerText = (c2, kind) => {
|
|
5370
|
+
if (kind === "cols") return `${c2.colAbs ? "$" : ""}${columnLabel(c2.col)}`;
|
|
5371
|
+
if (kind === "rows") return `${c2.rowAbs ? "$" : ""}${c2.row + 1}`;
|
|
5372
|
+
return `${c2.colAbs ? "$" : ""}${columnLabel(c2.col)}${c2.rowAbs ? "$" : ""}${c2.row + 1}`;
|
|
5373
|
+
};
|
|
5374
|
+
sameSpec = (a2, b) => a2.kind === b.kind && a2.start.row === b.start.row && a2.start.col === b.start.col && a2.end.row === b.end.row && a2.end.col === b.end.col;
|
|
5375
|
+
needsQuote = (name) => !/^[A-Za-z_¡-][A-Za-z0-9_.¡-]*$/.test(name) || /^[A-Za-z]{1,3}\d+$/.test(name) || /^(?:R\d*C?\d*|C\d*)$/i.test(name) || /^(?:TRUE|FALSE)$/i.test(name);
|
|
5363
5376
|
}
|
|
5364
|
-
|
|
5365
|
-
|
|
5366
|
-
|
|
5367
|
-
|
|
5368
|
-
|
|
5369
|
-
|
|
5377
|
+
});
|
|
5378
|
+
|
|
5379
|
+
// xlsx/formula/shift-formula.ts
|
|
5380
|
+
function remember(text, template) {
|
|
5381
|
+
if (templates.size >= MAX_TEMPLATES) templates.clear();
|
|
5382
|
+
templates.set(text, template);
|
|
5370
5383
|
}
|
|
5371
5384
|
function mergeSpacedAreas(tokens2) {
|
|
5372
5385
|
const out = [];
|
|
@@ -5393,83 +5406,141 @@ function mergeSpacedAreas(tokens2) {
|
|
|
5393
5406
|
}
|
|
5394
5407
|
return out;
|
|
5395
5408
|
}
|
|
5396
|
-
function
|
|
5397
|
-
|
|
5409
|
+
function templateOf(formula) {
|
|
5410
|
+
const cached = templates.get(formula);
|
|
5411
|
+
if (cached !== void 0) return cached;
|
|
5398
5412
|
const raw2 = safeTokens(formula);
|
|
5399
|
-
|
|
5400
|
-
|
|
5401
|
-
|
|
5402
|
-
|
|
5403
|
-
|
|
5404
|
-
|
|
5405
|
-
|
|
5406
|
-
|
|
5407
|
-
|
|
5408
|
-
|
|
5409
|
-
|
|
5410
|
-
|
|
5411
|
-
|
|
5412
|
-
|
|
5413
|
-
|
|
5414
|
-
|
|
5415
|
-
|
|
5416
|
-
|
|
5417
|
-
|
|
5418
|
-
if (shifted) {
|
|
5419
|
-
const [a2, b] = shifted;
|
|
5420
|
-
const nlo = isRow ? { ...lo, row: a2 } : { ...lo, col: a2 };
|
|
5421
|
-
const nhi = isRow ? { ...hi, row: b } : { ...hi, col: b };
|
|
5422
|
-
next = { kind: ref.kind, start: startFirst ? nlo : nhi, end: startFirst ? nhi : nlo };
|
|
5423
|
-
if (ref.kind === "cell") next.end = next.start;
|
|
5413
|
+
let template = null;
|
|
5414
|
+
if (raw2) {
|
|
5415
|
+
template = [];
|
|
5416
|
+
let literal = "";
|
|
5417
|
+
for (const token of mergeSpacedAreas(raw2)) {
|
|
5418
|
+
if (token.kind !== "ref" && !(token.kind === "name" && token.prefix)) {
|
|
5419
|
+
literal += token.text;
|
|
5420
|
+
continue;
|
|
5421
|
+
}
|
|
5422
|
+
if (literal) template.push(literal);
|
|
5423
|
+
literal = "";
|
|
5424
|
+
const part = { kind: token.kind, text: token.text };
|
|
5425
|
+
if (token.prefix) {
|
|
5426
|
+
part.prefix = token.prefix;
|
|
5427
|
+
if (token.prefix.book === void 0) part.sheet = token.prefix.sheet.toLowerCase();
|
|
5428
|
+
}
|
|
5429
|
+
if (token.ref) part.ref = token.ref;
|
|
5430
|
+
if (token.spill) part.spill = true;
|
|
5431
|
+
template.push(part);
|
|
5424
5432
|
}
|
|
5425
|
-
if (
|
|
5426
|
-
token.text = rewrite(token, next);
|
|
5433
|
+
if (literal) template.push(literal);
|
|
5427
5434
|
}
|
|
5428
|
-
|
|
5435
|
+
remember(formula, template);
|
|
5436
|
+
return template;
|
|
5429
5437
|
}
|
|
5430
|
-
function
|
|
5431
|
-
const
|
|
5432
|
-
|
|
5433
|
-
|
|
5434
|
-
|
|
5438
|
+
function rewriteTemplate(formula, rewrite2) {
|
|
5439
|
+
const template = templateOf(formula);
|
|
5440
|
+
if (!template) return formula;
|
|
5441
|
+
let next;
|
|
5442
|
+
for (let i = 0; i < template.length; i++) {
|
|
5443
|
+
const part = template[i];
|
|
5444
|
+
if (typeof part === "string") continue;
|
|
5445
|
+
const changed = rewrite2(part);
|
|
5446
|
+
if (!changed) continue;
|
|
5447
|
+
next ??= template.slice();
|
|
5448
|
+
next[i] = changed;
|
|
5449
|
+
}
|
|
5450
|
+
if (!next) return formula;
|
|
5451
|
+
const text = next.map((part) => typeof part === "string" ? part : part.text).join("");
|
|
5452
|
+
remember(text, next);
|
|
5453
|
+
return text;
|
|
5454
|
+
}
|
|
5455
|
+
function shiftInterval(a2, b, at, count2, max) {
|
|
5456
|
+
if (count2 > 0) {
|
|
5457
|
+
const na2 = a2 >= at ? a2 + count2 : a2;
|
|
5458
|
+
const nb2 = b >= at ? b + count2 : b;
|
|
5459
|
+
if (nb2 > max) return na2 > max ? void 0 : [na2, max];
|
|
5460
|
+
return [na2, nb2];
|
|
5461
|
+
}
|
|
5462
|
+
const n = -count2;
|
|
5463
|
+
const last = at + n - 1;
|
|
5464
|
+
if (a2 >= at && b <= last) return void 0;
|
|
5465
|
+
const na = a2 < at ? a2 : a2 <= last ? at : a2 - n;
|
|
5466
|
+
const nb = b < at ? b : b <= last ? at - 1 : b - n;
|
|
5467
|
+
return [na, nb];
|
|
5468
|
+
}
|
|
5469
|
+
function shiftRef(ref, spec2) {
|
|
5470
|
+
const isRow = spec2.axis === "row";
|
|
5471
|
+
if (isRow && ref.kind === "cols" || !isRow && ref.kind === "rows") return ref;
|
|
5472
|
+
const startFirst = isRow ? ref.start.row <= ref.end.row : ref.start.col <= ref.end.col;
|
|
5473
|
+
const lo = startFirst ? ref.start : ref.end;
|
|
5474
|
+
const hi = startFirst ? ref.end : ref.start;
|
|
5475
|
+
const shifted = shiftInterval(
|
|
5476
|
+
isRow ? lo.row : lo.col,
|
|
5477
|
+
isRow ? hi.row : hi.col,
|
|
5478
|
+
spec2.at,
|
|
5479
|
+
spec2.count,
|
|
5480
|
+
isRow ? MAX_ROW : MAX_COL
|
|
5481
|
+
);
|
|
5482
|
+
if (!shifted) return void 0;
|
|
5483
|
+
const [a2, b] = shifted;
|
|
5484
|
+
const nlo = isRow ? { ...lo, row: a2 } : { ...lo, col: a2 };
|
|
5485
|
+
const nhi = isRow ? { ...hi, row: b } : { ...hi, col: b };
|
|
5486
|
+
const next = {
|
|
5487
|
+
kind: ref.kind,
|
|
5488
|
+
start: startFirst ? nlo : nhi,
|
|
5489
|
+
end: startFirst ? nhi : nlo
|
|
5490
|
+
};
|
|
5491
|
+
if (ref.kind === "cell") next.end = next.start;
|
|
5492
|
+
return sameSpec(next, ref) ? ref : next;
|
|
5493
|
+
}
|
|
5494
|
+
function shiftFormula(formula, formulaSheet, spec2) {
|
|
5495
|
+
if (spec2.count === 0) return formula;
|
|
5496
|
+
const sheet = spec2.sheet.toLowerCase();
|
|
5497
|
+
const own = formulaSheet.toLowerCase() === sheet;
|
|
5498
|
+
return rewriteTemplate(formula, (part) => {
|
|
5499
|
+
if (part.kind !== "ref" || !part.ref || (part.prefix ? part.sheet !== sheet : !own))
|
|
5500
|
+
return void 0;
|
|
5501
|
+
const next = shiftRef(part.ref, spec2);
|
|
5502
|
+
if (next === part.ref) return void 0;
|
|
5503
|
+
const out = { kind: "ref", text: rewriteRef(part, next) };
|
|
5504
|
+
if (part.prefix) out.prefix = part.prefix;
|
|
5505
|
+
if (part.sheet !== void 0) out.sheet = part.sheet;
|
|
5506
|
+
if (next) out.ref = next;
|
|
5507
|
+
if (part.spill) out.spill = true;
|
|
5508
|
+
return out;
|
|
5509
|
+
});
|
|
5435
5510
|
}
|
|
5436
5511
|
function renameSheetInFormula(formula, oldName, newName) {
|
|
5437
|
-
const tokens2 = safeTokens(formula);
|
|
5438
|
-
if (!tokens2) return formula;
|
|
5439
5512
|
const lower2 = oldName.toLowerCase();
|
|
5440
|
-
|
|
5441
|
-
const prefix =
|
|
5442
|
-
if (!prefix ||
|
|
5443
|
-
const first2 =
|
|
5513
|
+
return rewriteTemplate(formula, (part) => {
|
|
5514
|
+
const prefix = part.prefix;
|
|
5515
|
+
if (!prefix || part.sheet === void 0) return void 0;
|
|
5516
|
+
const first2 = part.sheet === lower2;
|
|
5444
5517
|
const second = prefix.sheet2?.toLowerCase() === lower2;
|
|
5445
|
-
if (!first2 && !second)
|
|
5518
|
+
if (!first2 && !second) return void 0;
|
|
5446
5519
|
const renamed = { ...prefix, sheet: first2 ? newName : prefix.sheet };
|
|
5447
5520
|
if (prefix.sheet2 !== void 0) renamed.sheet2 = second ? newName : prefix.sheet2;
|
|
5448
5521
|
const text = prefixText(renamed);
|
|
5449
|
-
token.text = text + token.text.slice(prefix.text.length);
|
|
5450
5522
|
renamed.text = text;
|
|
5451
|
-
|
|
5452
|
-
|
|
5453
|
-
|
|
5523
|
+
const out = { ...part, text: text + part.text.slice(prefix.text.length) };
|
|
5524
|
+
out.prefix = renamed;
|
|
5525
|
+
out.sheet = renamed.sheet.toLowerCase();
|
|
5526
|
+
return out;
|
|
5527
|
+
});
|
|
5454
5528
|
}
|
|
5455
|
-
var
|
|
5529
|
+
var templates, MAX_TEMPLATES;
|
|
5530
|
+
var init_shift_formula = __esm({
|
|
5531
|
+
"xlsx/formula/shift-formula.ts"() {
|
|
5532
|
+
init_address();
|
|
5533
|
+
init_ref_text();
|
|
5534
|
+
templates = /* @__PURE__ */ new Map();
|
|
5535
|
+
MAX_TEMPLATES = 2e5;
|
|
5536
|
+
}
|
|
5537
|
+
});
|
|
5538
|
+
|
|
5539
|
+
// xlsx/formula/transform.ts
|
|
5456
5540
|
var init_transform = __esm({
|
|
5457
5541
|
"xlsx/formula/transform.ts"() {
|
|
5458
|
-
|
|
5459
|
-
|
|
5460
|
-
init_tokenizer();
|
|
5461
|
-
cornerText = (c2, kind) => {
|
|
5462
|
-
if (kind === "cols") return `${c2.colAbs ? "$" : ""}${columnLabel(c2.col)}`;
|
|
5463
|
-
if (kind === "rows") return `${c2.rowAbs ? "$" : ""}${c2.row + 1}`;
|
|
5464
|
-
return `${c2.colAbs ? "$" : ""}${columnLabel(c2.col)}${c2.rowAbs ? "$" : ""}${c2.row + 1}`;
|
|
5465
|
-
};
|
|
5466
|
-
sameSpec = (a2, b) => a2.kind === b.kind && a2.start.row === b.start.row && a2.start.col === b.start.col && a2.end.row === b.end.row && a2.end.col === b.end.col;
|
|
5467
|
-
sheetMatches = (prefix, formulaSheet, sheet) => {
|
|
5468
|
-
if (prefix?.book !== void 0) return false;
|
|
5469
|
-
const name = prefix ? prefix.sheet : formulaSheet;
|
|
5470
|
-
return name.toLowerCase() === sheet.toLowerCase();
|
|
5471
|
-
};
|
|
5472
|
-
needsQuote = (name) => !/^[A-Za-z_\u00A1-\uFFFF][A-Za-z0-9_.\u00A1-\uFFFF]*$/.test(name) || /^[A-Za-z]{1,3}\d+$/.test(name) || /^(?:R\d*C?\d*|C\d*)$/i.test(name) || /^(?:TRUE|FALSE)$/i.test(name);
|
|
5542
|
+
init_ref_text();
|
|
5543
|
+
init_shift_formula();
|
|
5473
5544
|
}
|
|
5474
5545
|
});
|
|
5475
5546
|
|
|
@@ -5560,7 +5631,7 @@ var init_formula_storage = __esm({
|
|
|
5560
5631
|
});
|
|
5561
5632
|
|
|
5562
5633
|
// xlsx/read/formula-text.ts
|
|
5563
|
-
function
|
|
5634
|
+
function rewrite(formula, visit) {
|
|
5564
5635
|
const out = [];
|
|
5565
5636
|
let i = 0;
|
|
5566
5637
|
while (i < formula.length) {
|
|
@@ -5603,7 +5674,7 @@ function rewrite2(formula, visit) {
|
|
|
5603
5674
|
}
|
|
5604
5675
|
function stripFuturePrefixes(formula) {
|
|
5605
5676
|
if (!formula.includes("_xl")) return formula;
|
|
5606
|
-
const plain2 =
|
|
5677
|
+
const plain2 = rewrite(formula, (token, next, out) => {
|
|
5607
5678
|
if (!next.startsWith("(")) return false;
|
|
5608
5679
|
const stripped = token.replace(/^(_xlfn\.)?(_xlws\.)?/i, "");
|
|
5609
5680
|
if (stripped === token) return false;
|
|
@@ -5613,7 +5684,7 @@ function stripFuturePrefixes(formula) {
|
|
|
5613
5684
|
return fromStoredSyntax(plain2);
|
|
5614
5685
|
}
|
|
5615
5686
|
function addFuturePrefixes(formula) {
|
|
5616
|
-
return
|
|
5687
|
+
return rewrite(toStoredSyntax(formula), (token, next, out) => {
|
|
5617
5688
|
if (!next.startsWith("(")) return false;
|
|
5618
5689
|
const upper2 = token.toUpperCase();
|
|
5619
5690
|
if (!FUTURE_FUNCTIONS.has(upper2)) return false;
|
|
@@ -6916,7 +6987,9 @@ var init_structured = __esm({
|
|
|
6916
6987
|
|
|
6917
6988
|
// xlsx/formula/parser.ts
|
|
6918
6989
|
function parseFormula(formula) {
|
|
6919
|
-
|
|
6990
|
+
return parseTokens(tokenize(formula));
|
|
6991
|
+
}
|
|
6992
|
+
function parseTokens(all2) {
|
|
6920
6993
|
const tokens2 = [];
|
|
6921
6994
|
const wsBefore = [];
|
|
6922
6995
|
let sawWs = false;
|
|
@@ -10557,8 +10630,10 @@ var init_financial = __esm({
|
|
|
10557
10630
|
|
|
10558
10631
|
// xlsx/formula/references.ts
|
|
10559
10632
|
function sheetIndex(host, name) {
|
|
10633
|
+
const sheets = host.workbook.sheets;
|
|
10634
|
+
for (let i = 0; i < sheets.length; i++) if (sheets[i]?.name === name) return i;
|
|
10560
10635
|
const lower2 = name.toLowerCase();
|
|
10561
|
-
return
|
|
10636
|
+
return sheets.findIndex((sheet) => sheet.name.toLowerCase() === lower2);
|
|
10562
10637
|
}
|
|
10563
10638
|
var init_references = __esm({
|
|
10564
10639
|
"xlsx/formula/references.ts"() {
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { type CellRange } from '../address.js';
|
|
2
2
|
import type { Cell, CellValue, Workbook, Worksheet } from '../model.js';
|
|
3
3
|
import { type CalcEngine } from './deps.js';
|
|
4
|
-
import type { EditScope } from './history.js';
|
|
4
|
+
import type { CalcHint, EditScope } from './history.js';
|
|
5
5
|
import type { WorkbookChangeKind } from './types.js';
|
|
6
6
|
export interface RunInfo {
|
|
7
7
|
sheet?: number;
|
|
8
8
|
ranges?: CellRange[];
|
|
9
9
|
structural?: boolean;
|
|
10
|
+
/** Lets the calc engine follow this structural edit in place (see `CalcHint`). */
|
|
11
|
+
calc?: CalcHint;
|
|
10
12
|
}
|
|
11
13
|
/** What every command module receives from the session. */
|
|
12
14
|
export interface EditContext {
|