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/xlsx/load/index.mjs
CHANGED
|
@@ -5033,7 +5033,7 @@ var NAME_RE = /^[A-Za-z_\\\u00A1-\uFFFF][A-Za-z0-9_.?\\\u00A1-\uFFFF]*/;
|
|
|
5033
5033
|
var CELL_RE = /^(\$?)([A-Za-z]{1,3})(\$?)(\d{1,7})/;
|
|
5034
5034
|
var COLS_RE = /^(\$?)([A-Za-z]{1,3}):(\$?)([A-Za-z]{1,3})/;
|
|
5035
5035
|
var ROWS_RE = /^(\$?)(\d{1,7}):(\$?)(\d{1,7})/;
|
|
5036
|
-
var NUMBER_RE = /^(?:\d
|
|
5036
|
+
var NUMBER_RE = /^(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?/;
|
|
5037
5037
|
var sticky = (re) => new RegExp(re.source.replace(/^\^/, ""), "y");
|
|
5038
5038
|
var CELL_AT = sticky(CELL_RE);
|
|
5039
5039
|
var COLS_AT = sticky(COLS_RE);
|
|
@@ -5380,7 +5380,7 @@ function readName(source2, at, start, prefix) {
|
|
|
5380
5380
|
}
|
|
5381
5381
|
var joinTokens = (tokens2) => tokens2.map((t) => t.text).join("");
|
|
5382
5382
|
|
|
5383
|
-
// xlsx/formula/
|
|
5383
|
+
// xlsx/formula/ref-text.ts
|
|
5384
5384
|
function safeTokens(formula) {
|
|
5385
5385
|
try {
|
|
5386
5386
|
return tokenize(formula);
|
|
@@ -5399,50 +5399,26 @@ function formatRefSpec(spec2) {
|
|
|
5399
5399
|
if (spec2.kind === "cell") return a2;
|
|
5400
5400
|
return `${a2}:${cornerText(spec2.end, spec2.kind)}`;
|
|
5401
5401
|
}
|
|
5402
|
-
function
|
|
5402
|
+
function rewriteRef(token, ref) {
|
|
5403
5403
|
const prefix = token.prefix?.text ?? "";
|
|
5404
5404
|
if (!ref) return `${prefix}#REF!`;
|
|
5405
5405
|
return `${prefix}${formatRefSpec(ref)}${token.spill ? "#" : ""}`;
|
|
5406
5406
|
}
|
|
5407
5407
|
var 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;
|
|
5408
|
-
|
|
5409
|
-
|
|
5410
|
-
|
|
5411
|
-
|
|
5412
|
-
|
|
5413
|
-
|
|
5414
|
-
const move = (c2) => {
|
|
5415
|
-
const row2 = spec2.kind === "cols" || c2.rowAbs ? c2.row : c2.row + dRow;
|
|
5416
|
-
const col = spec2.kind === "rows" || c2.colAbs ? c2.col : c2.col + dCol;
|
|
5417
|
-
if (row2 < 0 || row2 > MAX_ROW || col < 0 || col > MAX_COL) return void 0;
|
|
5418
|
-
return { ...c2, row: row2, col };
|
|
5419
|
-
};
|
|
5420
|
-
const start = move(spec2.start);
|
|
5421
|
-
const end = move(spec2.end);
|
|
5422
|
-
const next = start && end ? { kind: spec2.kind, start, end } : void 0;
|
|
5423
|
-
if (next && sameSpec(next, spec2)) continue;
|
|
5424
|
-
token.text = rewrite(token, next);
|
|
5425
|
-
}
|
|
5426
|
-
return joinTokens(tokens2);
|
|
5408
|
+
var 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);
|
|
5409
|
+
function prefixText(prefix) {
|
|
5410
|
+
const sheets = prefix.sheet2 !== void 0 ? `${prefix.sheet}:${prefix.sheet2}` : prefix.sheet;
|
|
5411
|
+
const book = prefix.book !== void 0 ? `[${prefix.book}]` : "";
|
|
5412
|
+
const quote2 = needsQuote(prefix.sheet) || prefix.sheet2 !== void 0 && needsQuote(prefix.sheet2);
|
|
5413
|
+
return quote2 ? `'${(book + sheets).replace(/'/g, "''")}'!` : `${book}${sheets}!`;
|
|
5427
5414
|
}
|
|
5428
|
-
|
|
5429
|
-
|
|
5430
|
-
|
|
5431
|
-
|
|
5432
|
-
|
|
5433
|
-
|
|
5434
|
-
|
|
5435
|
-
const na2 = a2 >= at ? a2 + count2 : a2;
|
|
5436
|
-
const nb2 = b >= at ? b + count2 : b;
|
|
5437
|
-
if (nb2 > max) return na2 > max ? void 0 : [na2, max];
|
|
5438
|
-
return [na2, nb2];
|
|
5439
|
-
}
|
|
5440
|
-
const n = -count2;
|
|
5441
|
-
const last = at + n - 1;
|
|
5442
|
-
if (a2 >= at && b <= last) return void 0;
|
|
5443
|
-
const na = a2 < at ? a2 : a2 <= last ? at : a2 - n;
|
|
5444
|
-
const nb = b < at ? b : b <= last ? at - 1 : b - n;
|
|
5445
|
-
return [na, nb];
|
|
5415
|
+
|
|
5416
|
+
// xlsx/formula/shift-formula.ts
|
|
5417
|
+
var templates = /* @__PURE__ */ new Map();
|
|
5418
|
+
var MAX_TEMPLATES = 2e5;
|
|
5419
|
+
function remember(text, template) {
|
|
5420
|
+
if (templates.size >= MAX_TEMPLATES) templates.clear();
|
|
5421
|
+
templates.set(text, template);
|
|
5446
5422
|
}
|
|
5447
5423
|
function mergeSpacedAreas(tokens2) {
|
|
5448
5424
|
const out = [];
|
|
@@ -5469,63 +5445,145 @@ function mergeSpacedAreas(tokens2) {
|
|
|
5469
5445
|
}
|
|
5470
5446
|
return out;
|
|
5471
5447
|
}
|
|
5472
|
-
function
|
|
5473
|
-
|
|
5448
|
+
function templateOf(formula) {
|
|
5449
|
+
const cached = templates.get(formula);
|
|
5450
|
+
if (cached !== void 0) return cached;
|
|
5474
5451
|
const raw2 = safeTokens(formula);
|
|
5475
|
-
|
|
5476
|
-
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5483
|
-
|
|
5484
|
-
|
|
5485
|
-
|
|
5486
|
-
|
|
5487
|
-
|
|
5488
|
-
|
|
5489
|
-
|
|
5490
|
-
|
|
5491
|
-
|
|
5492
|
-
|
|
5493
|
-
|
|
5494
|
-
if (shifted) {
|
|
5495
|
-
const [a2, b] = shifted;
|
|
5496
|
-
const nlo = isRow ? { ...lo, row: a2 } : { ...lo, col: a2 };
|
|
5497
|
-
const nhi = isRow ? { ...hi, row: b } : { ...hi, col: b };
|
|
5498
|
-
next = { kind: ref.kind, start: startFirst ? nlo : nhi, end: startFirst ? nhi : nlo };
|
|
5499
|
-
if (ref.kind === "cell") next.end = next.start;
|
|
5452
|
+
let template = null;
|
|
5453
|
+
if (raw2) {
|
|
5454
|
+
template = [];
|
|
5455
|
+
let literal = "";
|
|
5456
|
+
for (const token of mergeSpacedAreas(raw2)) {
|
|
5457
|
+
if (token.kind !== "ref" && !(token.kind === "name" && token.prefix)) {
|
|
5458
|
+
literal += token.text;
|
|
5459
|
+
continue;
|
|
5460
|
+
}
|
|
5461
|
+
if (literal) template.push(literal);
|
|
5462
|
+
literal = "";
|
|
5463
|
+
const part = { kind: token.kind, text: token.text };
|
|
5464
|
+
if (token.prefix) {
|
|
5465
|
+
part.prefix = token.prefix;
|
|
5466
|
+
if (token.prefix.book === void 0) part.sheet = token.prefix.sheet.toLowerCase();
|
|
5467
|
+
}
|
|
5468
|
+
if (token.ref) part.ref = token.ref;
|
|
5469
|
+
if (token.spill) part.spill = true;
|
|
5470
|
+
template.push(part);
|
|
5500
5471
|
}
|
|
5501
|
-
if (
|
|
5502
|
-
token.text = rewrite(token, next);
|
|
5472
|
+
if (literal) template.push(literal);
|
|
5503
5473
|
}
|
|
5504
|
-
|
|
5474
|
+
remember(formula, template);
|
|
5475
|
+
return template;
|
|
5505
5476
|
}
|
|
5506
|
-
|
|
5507
|
-
|
|
5508
|
-
|
|
5509
|
-
|
|
5510
|
-
|
|
5511
|
-
|
|
5477
|
+
function rewriteTemplate(formula, rewrite2) {
|
|
5478
|
+
const template = templateOf(formula);
|
|
5479
|
+
if (!template) return formula;
|
|
5480
|
+
let next;
|
|
5481
|
+
for (let i2 = 0; i2 < template.length; i2++) {
|
|
5482
|
+
const part = template[i2];
|
|
5483
|
+
if (typeof part === "string") continue;
|
|
5484
|
+
const changed = rewrite2(part);
|
|
5485
|
+
if (!changed) continue;
|
|
5486
|
+
next ??= template.slice();
|
|
5487
|
+
next[i2] = changed;
|
|
5488
|
+
}
|
|
5489
|
+
if (!next) return formula;
|
|
5490
|
+
const text = next.map((part) => typeof part === "string" ? part : part.text).join("");
|
|
5491
|
+
remember(text, next);
|
|
5492
|
+
return text;
|
|
5493
|
+
}
|
|
5494
|
+
function shiftInterval(a2, b, at, count2, max) {
|
|
5495
|
+
if (count2 > 0) {
|
|
5496
|
+
const na2 = a2 >= at ? a2 + count2 : a2;
|
|
5497
|
+
const nb2 = b >= at ? b + count2 : b;
|
|
5498
|
+
if (nb2 > max) return na2 > max ? void 0 : [na2, max];
|
|
5499
|
+
return [na2, nb2];
|
|
5500
|
+
}
|
|
5501
|
+
const n = -count2;
|
|
5502
|
+
const last = at + n - 1;
|
|
5503
|
+
if (a2 >= at && b <= last) return void 0;
|
|
5504
|
+
const na = a2 < at ? a2 : a2 <= last ? at : a2 - n;
|
|
5505
|
+
const nb = b < at ? b : b <= last ? at - 1 : b - n;
|
|
5506
|
+
return [na, nb];
|
|
5507
|
+
}
|
|
5508
|
+
function shiftRef(ref, spec2) {
|
|
5509
|
+
const isRow = spec2.axis === "row";
|
|
5510
|
+
if (isRow && ref.kind === "cols" || !isRow && ref.kind === "rows") return ref;
|
|
5511
|
+
const startFirst = isRow ? ref.start.row <= ref.end.row : ref.start.col <= ref.end.col;
|
|
5512
|
+
const lo = startFirst ? ref.start : ref.end;
|
|
5513
|
+
const hi = startFirst ? ref.end : ref.start;
|
|
5514
|
+
const shifted = shiftInterval(
|
|
5515
|
+
isRow ? lo.row : lo.col,
|
|
5516
|
+
isRow ? hi.row : hi.col,
|
|
5517
|
+
spec2.at,
|
|
5518
|
+
spec2.count,
|
|
5519
|
+
isRow ? MAX_ROW : MAX_COL
|
|
5520
|
+
);
|
|
5521
|
+
if (!shifted) return void 0;
|
|
5522
|
+
const [a2, b] = shifted;
|
|
5523
|
+
const nlo = isRow ? { ...lo, row: a2 } : { ...lo, col: a2 };
|
|
5524
|
+
const nhi = isRow ? { ...hi, row: b } : { ...hi, col: b };
|
|
5525
|
+
const next = {
|
|
5526
|
+
kind: ref.kind,
|
|
5527
|
+
start: startFirst ? nlo : nhi,
|
|
5528
|
+
end: startFirst ? nhi : nlo
|
|
5529
|
+
};
|
|
5530
|
+
if (ref.kind === "cell") next.end = next.start;
|
|
5531
|
+
return sameSpec(next, ref) ? ref : next;
|
|
5532
|
+
}
|
|
5533
|
+
function shiftFormula(formula, formulaSheet, spec2) {
|
|
5534
|
+
if (spec2.count === 0) return formula;
|
|
5535
|
+
const sheet = spec2.sheet.toLowerCase();
|
|
5536
|
+
const own = formulaSheet.toLowerCase() === sheet;
|
|
5537
|
+
return rewriteTemplate(formula, (part) => {
|
|
5538
|
+
if (part.kind !== "ref" || !part.ref || (part.prefix ? part.sheet !== sheet : !own))
|
|
5539
|
+
return void 0;
|
|
5540
|
+
const next = shiftRef(part.ref, spec2);
|
|
5541
|
+
if (next === part.ref) return void 0;
|
|
5542
|
+
const out = { kind: "ref", text: rewriteRef(part, next) };
|
|
5543
|
+
if (part.prefix) out.prefix = part.prefix;
|
|
5544
|
+
if (part.sheet !== void 0) out.sheet = part.sheet;
|
|
5545
|
+
if (next) out.ref = next;
|
|
5546
|
+
if (part.spill) out.spill = true;
|
|
5547
|
+
return out;
|
|
5548
|
+
});
|
|
5512
5549
|
}
|
|
5513
5550
|
function renameSheetInFormula(formula, oldName, newName) {
|
|
5514
|
-
const tokens2 = safeTokens(formula);
|
|
5515
|
-
if (!tokens2) return formula;
|
|
5516
5551
|
const lower2 = oldName.toLowerCase();
|
|
5517
|
-
|
|
5518
|
-
const prefix =
|
|
5519
|
-
if (!prefix ||
|
|
5520
|
-
const first2 =
|
|
5552
|
+
return rewriteTemplate(formula, (part) => {
|
|
5553
|
+
const prefix = part.prefix;
|
|
5554
|
+
if (!prefix || part.sheet === void 0) return void 0;
|
|
5555
|
+
const first2 = part.sheet === lower2;
|
|
5521
5556
|
const second = prefix.sheet2?.toLowerCase() === lower2;
|
|
5522
|
-
if (!first2 && !second)
|
|
5557
|
+
if (!first2 && !second) return void 0;
|
|
5523
5558
|
const renamed = { ...prefix, sheet: first2 ? newName : prefix.sheet };
|
|
5524
5559
|
if (prefix.sheet2 !== void 0) renamed.sheet2 = second ? newName : prefix.sheet2;
|
|
5525
5560
|
const text = prefixText(renamed);
|
|
5526
|
-
token.text = text + token.text.slice(prefix.text.length);
|
|
5527
5561
|
renamed.text = text;
|
|
5528
|
-
|
|
5562
|
+
const out = { ...part, text: text + part.text.slice(prefix.text.length) };
|
|
5563
|
+
out.prefix = renamed;
|
|
5564
|
+
out.sheet = renamed.sheet.toLowerCase();
|
|
5565
|
+
return out;
|
|
5566
|
+
});
|
|
5567
|
+
}
|
|
5568
|
+
|
|
5569
|
+
// xlsx/formula/transform.ts
|
|
5570
|
+
function translateFormula(formula, dRow, dCol) {
|
|
5571
|
+
const tokens2 = safeTokens(formula);
|
|
5572
|
+
if (!tokens2) return formula;
|
|
5573
|
+
for (const token of tokens2) {
|
|
5574
|
+
if (token.kind !== "ref" || !token.ref) continue;
|
|
5575
|
+
const spec2 = token.ref;
|
|
5576
|
+
const move = (c2) => {
|
|
5577
|
+
const row2 = spec2.kind === "cols" || c2.rowAbs ? c2.row : c2.row + dRow;
|
|
5578
|
+
const col = spec2.kind === "rows" || c2.colAbs ? c2.col : c2.col + dCol;
|
|
5579
|
+
if (row2 < 0 || row2 > MAX_ROW || col < 0 || col > MAX_COL) return void 0;
|
|
5580
|
+
return { ...c2, row: row2, col };
|
|
5581
|
+
};
|
|
5582
|
+
const start = move(spec2.start);
|
|
5583
|
+
const end = move(spec2.end);
|
|
5584
|
+
const next = start && end ? { kind: spec2.kind, start, end } : void 0;
|
|
5585
|
+
if (next && sameSpec(next, spec2)) continue;
|
|
5586
|
+
token.text = rewriteRef(token, next);
|
|
5529
5587
|
}
|
|
5530
5588
|
return joinTokens(tokens2);
|
|
5531
5589
|
}
|
|
@@ -5614,7 +5672,7 @@ var FUTURE_FUNCTIONS = new Set(
|
|
|
5614
5672
|
"AGGREGATE BETA.DIST BETA.INV BINOM.DIST BINOM.INV CEILING.PRECISE CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CONFIDENCE.NORM CONFIDENCE.T COVARIANCE.P COVARIANCE.S ERF.PRECISE ERFC.PRECISE EXPON.DIST F.DIST F.DIST.RT F.INV F.INV.RT F.TEST FLOOR.PRECISE GAMMA.DIST GAMMA.INV GAMMALN.PRECISE HYPGEOM.DIST LOGNORM.DIST LOGNORM.INV MODE.MULT MODE.SNGL NEGBINOM.DIST NETWORKDAYS.INTL NORM.DIST NORM.INV NORM.S.DIST NORM.S.INV PERCENTILE.EXC PERCENTILE.INC PERCENTRANK.EXC PERCENTRANK.INC POISSON.DIST QUARTILE.EXC QUARTILE.INC RANK.AVG RANK.EQ STDEV.P STDEV.S T.DIST T.DIST.2T T.DIST.RT T.INV T.INV.2T T.TEST VAR.P VAR.S WEIBULL.DIST WORKDAY.INTL ACOT ACOTH ARABIC BASE BINOM.DIST.RANGE BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CEILING.MATH COMBINA COT COTH CSC CSCH DAYS DECIMAL ENCODEURL FILTERXML FLOOR.MATH FORMULATEXT GAMMA GAUSS IFNA IMCOSH IMCOT IMCSC IMCSCH IMSEC IMSECH IMSINH IMTAN ISFORMULA ISOWEEKNUM MUNIT NUMBERVALUE PDURATION PERMUTATIONA PHI RRI SEC SECH SHEET SHEETS SKEW.P UNICHAR UNICODE WEBSERVICE XOR CONCAT FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR IFS MAXIFS MINIFS SWITCH TEXTJOIN XLOOKUP XMATCH FILTER SORT SORTBY UNIQUE SEQUENCE RANDARRAY LET LAMBDA TEXTBEFORE TEXTAFTER TEXTSPLIT VSTACK HSTACK TAKE DROP CHOOSEROWS CHOOSECOLS TOCOL TOROW WRAPROWS WRAPCOLS EXPAND ARRAYTOTEXT VALUETOTEXT ISOMITTED BYROW BYCOL MAP REDUCE SCAN MAKEARRAY IMAGE GROUPBY PIVOTBY PERCENTOF REGEXTEST REGEXEXTRACT REGEXREPLACE TRIMRANGE ANCHORARRAY SINGLE STOCKHISTORY FIELDVALUE".split(" ")
|
|
5615
5673
|
);
|
|
5616
5674
|
var WORKSHEET_PREFIXED = /* @__PURE__ */ new Set(["FILTER", "SORT"]);
|
|
5617
|
-
function
|
|
5675
|
+
function rewrite(formula, visit) {
|
|
5618
5676
|
const out = [];
|
|
5619
5677
|
let i2 = 0;
|
|
5620
5678
|
while (i2 < formula.length) {
|
|
@@ -5657,7 +5715,7 @@ function rewrite2(formula, visit) {
|
|
|
5657
5715
|
}
|
|
5658
5716
|
function stripFuturePrefixes(formula) {
|
|
5659
5717
|
if (!formula.includes("_xl")) return formula;
|
|
5660
|
-
const plain2 =
|
|
5718
|
+
const plain2 = rewrite(formula, (token, next, out) => {
|
|
5661
5719
|
if (!next.startsWith("(")) return false;
|
|
5662
5720
|
const stripped = token.replace(/^(_xlfn\.)?(_xlws\.)?/i, "");
|
|
5663
5721
|
if (stripped === token) return false;
|
|
@@ -5667,7 +5725,7 @@ function stripFuturePrefixes(formula) {
|
|
|
5667
5725
|
return fromStoredSyntax(plain2);
|
|
5668
5726
|
}
|
|
5669
5727
|
function addFuturePrefixes(formula) {
|
|
5670
|
-
return
|
|
5728
|
+
return rewrite(toStoredSyntax(formula), (token, next, out) => {
|
|
5671
5729
|
if (!next.startsWith("(")) return false;
|
|
5672
5730
|
const upper2 = token.toUpperCase();
|
|
5673
5731
|
if (!FUTURE_FUNCTIONS.has(upper2)) return false;
|
|
@@ -12195,7 +12253,9 @@ var PREC_INTERSECT = 9;
|
|
|
12195
12253
|
var PREC_RANGE = 10;
|
|
12196
12254
|
var OPERAND_START = /* @__PURE__ */ new Set(["ref", "name", "func", "open", "structured"]);
|
|
12197
12255
|
function parseFormula(formula) {
|
|
12198
|
-
|
|
12256
|
+
return parseTokens(tokenize(formula));
|
|
12257
|
+
}
|
|
12258
|
+
function parseTokens(all2) {
|
|
12199
12259
|
const tokens2 = [];
|
|
12200
12260
|
const wsBefore = [];
|
|
12201
12261
|
let sawWs = false;
|
|
@@ -15624,8 +15684,10 @@ var FINANCIAL_FUNCTIONS = [
|
|
|
15624
15684
|
|
|
15625
15685
|
// xlsx/formula/references.ts
|
|
15626
15686
|
function sheetIndex(host, name) {
|
|
15687
|
+
const sheets = host.workbook.sheets;
|
|
15688
|
+
for (let i2 = 0; i2 < sheets.length; i2++) if (sheets[i2]?.name === name) return i2;
|
|
15627
15689
|
const lower2 = name.toLowerCase();
|
|
15628
|
-
return
|
|
15690
|
+
return sheets.findIndex((sheet) => sheet.name.toLowerCase() === lower2);
|
|
15629
15691
|
}
|
|
15630
15692
|
|
|
15631
15693
|
// xlsx/formula/functions/info.ts
|