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.
Files changed (82) hide show
  1. package/dist/{PptxHandler-SJTINPU4.mjs → PptxHandler-VQQS4VS6.mjs} +2 -2
  2. package/dist/automation/index.cjs +1059 -328
  3. package/dist/automation/index.mjs +1059 -328
  4. package/dist/chart/bar-cluster-geometry.d.ts +6 -0
  5. package/dist/chart/bar-cluster-geometry.d.ts.map +1 -1
  6. package/dist/chart/index.cjs +5 -2
  7. package/dist/chart/index.mjs +5 -3
  8. package/dist/chart/render/chart-spacing.d.ts.map +1 -1
  9. package/dist/{chunk-TEOAOAIF.mjs → chunk-5U27IVB7.mjs} +3 -3
  10. package/dist/{chunk-VYTA2OUN.mjs → chunk-5VLNF4OX.mjs} +1 -1
  11. package/dist/{chunk-CQQAPUAG.mjs → chunk-V2BIGIH4.mjs} +11 -9
  12. package/dist/{chunk-FI4RSJ24.mjs → chunk-XBNSBDNT.mjs} +1 -1
  13. package/dist/{chunk-XCZ7U3GZ.mjs → chunk-XSFHGZFH.mjs} +11 -9
  14. package/dist/docx/index.cjs +4 -2
  15. package/dist/docx/index.mjs +4 -2
  16. package/dist/docx/layout/index.cjs +4 -2
  17. package/dist/docx/layout/index.mjs +4 -2
  18. package/dist/docx/ui/index.cjs +4 -2
  19. package/dist/docx/ui/index.mjs +4 -2
  20. package/dist/index.cjs +5 -2
  21. package/dist/index.mjs +5 -2
  22. package/dist/pptx/automation/index.cjs +27 -17
  23. package/dist/pptx/automation/index.mjs +5 -5
  24. package/dist/pptx/chunks/index-EZJZ7USt.d.ts.map +1 -1
  25. package/dist/pptx/cli/index.cjs +27 -17
  26. package/dist/pptx/cli/index.mjs +4 -4
  27. package/dist/pptx/converter/index.mjs +2 -2
  28. package/dist/pptx/index.cjs +27 -17
  29. package/dist/pptx/index.mjs +5 -5
  30. package/dist/teams/index.cjs +157 -82
  31. package/dist/teams/index.mjs +157 -82
  32. package/dist/xlsx/edit/context.d.ts +3 -1
  33. package/dist/xlsx/edit/context.d.ts.map +1 -1
  34. package/dist/xlsx/edit/history.d.ts +18 -0
  35. package/dist/xlsx/edit/history.d.ts.map +1 -1
  36. package/dist/xlsx/edit/session-calc.d.ts +30 -8
  37. package/dist/xlsx/edit/session-calc.d.ts.map +1 -1
  38. package/dist/xlsx/edit/session.d.ts.map +1 -1
  39. package/dist/xlsx/edit/sheets.d.ts.map +1 -1
  40. package/dist/xlsx/edit/types.d.ts +23 -3
  41. package/dist/xlsx/edit/types.d.ts.map +1 -1
  42. package/dist/xlsx/formula/engine-core.d.ts.map +1 -1
  43. package/dist/xlsx/formula/engine-host.d.ts +6 -2
  44. package/dist/xlsx/formula/engine-host.d.ts.map +1 -1
  45. package/dist/xlsx/formula/engine-prepare.d.ts +33 -0
  46. package/dist/xlsx/formula/engine-prepare.d.ts.map +1 -0
  47. package/dist/xlsx/formula/engine-structure.d.ts +40 -0
  48. package/dist/xlsx/formula/engine-structure.d.ts.map +1 -0
  49. package/dist/xlsx/formula/engine-types.d.ts +26 -0
  50. package/dist/xlsx/formula/engine-types.d.ts.map +1 -1
  51. package/dist/xlsx/formula/engine.d.ts.map +1 -1
  52. package/dist/xlsx/formula/formula-shape.d.ts +28 -0
  53. package/dist/xlsx/formula/formula-shape.d.ts.map +1 -0
  54. package/dist/xlsx/formula/graph-index.d.ts +3 -1
  55. package/dist/xlsx/formula/graph-index.d.ts.map +1 -1
  56. package/dist/xlsx/formula/graph.d.ts +5 -0
  57. package/dist/xlsx/formula/graph.d.ts.map +1 -1
  58. package/dist/xlsx/formula/lexemes.d.ts.map +1 -1
  59. package/dist/xlsx/formula/parse-cache.d.ts +9 -0
  60. package/dist/xlsx/formula/parse-cache.d.ts.map +1 -0
  61. package/dist/xlsx/formula/parser.d.ts +3 -0
  62. package/dist/xlsx/formula/parser.d.ts.map +1 -1
  63. package/dist/xlsx/formula/ref-text.d.ts +14 -0
  64. package/dist/xlsx/formula/ref-text.d.ts.map +1 -0
  65. package/dist/xlsx/formula/references.d.ts.map +1 -1
  66. package/dist/xlsx/formula/shift-formula.d.ts +19 -0
  67. package/dist/xlsx/formula/shift-formula.d.ts.map +1 -0
  68. package/dist/xlsx/formula/shift-graph.d.ts +42 -0
  69. package/dist/xlsx/formula/shift-graph.d.ts.map +1 -0
  70. package/dist/xlsx/formula/transform.d.ts +2 -23
  71. package/dist/xlsx/formula/transform.d.ts.map +1 -1
  72. package/dist/xlsx/index.cjs +1069 -329
  73. package/dist/xlsx/index.mjs +1069 -330
  74. package/dist/xlsx/layout/index.d.ts +1 -1
  75. package/dist/xlsx/layout/index.d.ts.map +1 -1
  76. package/dist/xlsx/layout/sheet-queries.d.ts +7 -0
  77. package/dist/xlsx/layout/sheet-queries.d.ts.map +1 -1
  78. package/dist/xlsx/load/index.cjs +152 -90
  79. package/dist/xlsx/load/index.mjs +152 -90
  80. package/dist/xlsx/ui/index.cjs +1071 -340
  81. package/dist/xlsx/ui/index.mjs +1071 -340
  82. package/package.json +1 -1
@@ -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+\.?\d*|\.\d+)(?:[eE][+-]?\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/transform.ts
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 rewrite(token, ref) {
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
- function translateFormula(formula, dRow, dCol) {
5409
- const tokens2 = safeTokens(formula);
5410
- if (!tokens2) return formula;
5411
- for (const token of tokens2) {
5412
- if (token.kind !== "ref" || !token.ref) continue;
5413
- const spec2 = token.ref;
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
- var sheetMatches = (prefix, formulaSheet, sheet) => {
5429
- if (prefix?.book !== void 0) return false;
5430
- const name = prefix ? prefix.sheet : formulaSheet;
5431
- return name.toLowerCase() === sheet.toLowerCase();
5432
- };
5433
- function shiftInterval(a2, b, at, count2, max) {
5434
- if (count2 > 0) {
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 shiftFormula(formula, formulaSheet, spec2) {
5473
- if (spec2.count === 0) return formula;
5448
+ function templateOf(formula) {
5449
+ const cached = templates.get(formula);
5450
+ if (cached !== void 0) return cached;
5474
5451
  const raw2 = safeTokens(formula);
5475
- if (!raw2) return formula;
5476
- const tokens2 = mergeSpacedAreas(raw2);
5477
- const isRow = spec2.axis === "row";
5478
- for (const token of tokens2) {
5479
- if (token.kind !== "ref" || !token.ref || !sheetMatches(token.prefix, formulaSheet, spec2.sheet))
5480
- continue;
5481
- const ref = token.ref;
5482
- if (isRow && ref.kind === "cols" || !isRow && ref.kind === "rows") continue;
5483
- const startFirst = isRow ? ref.start.row <= ref.end.row : ref.start.col <= ref.end.col;
5484
- const lo = startFirst ? ref.start : ref.end;
5485
- const hi = startFirst ? ref.end : ref.start;
5486
- const shifted = shiftInterval(
5487
- isRow ? lo.row : lo.col,
5488
- isRow ? hi.row : hi.col,
5489
- spec2.at,
5490
- spec2.count,
5491
- isRow ? MAX_ROW : MAX_COL
5492
- );
5493
- let next;
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 (next && sameSpec(next, ref)) continue;
5502
- token.text = rewrite(token, next);
5472
+ if (literal) template.push(literal);
5503
5473
  }
5504
- return joinTokens(tokens2);
5474
+ remember(formula, template);
5475
+ return template;
5505
5476
  }
5506
- var 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);
5507
- function prefixText(prefix) {
5508
- const sheets = prefix.sheet2 !== void 0 ? `${prefix.sheet}:${prefix.sheet2}` : prefix.sheet;
5509
- const book = prefix.book !== void 0 ? `[${prefix.book}]` : "";
5510
- const quote2 = needsQuote(prefix.sheet) || prefix.sheet2 !== void 0 && needsQuote(prefix.sheet2);
5511
- return quote2 ? `'${(book + sheets).replace(/'/g, "''")}'!` : `${book}${sheets}!`;
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
- for (const token of tokens2) {
5518
- const prefix = token.prefix;
5519
- if (!prefix || prefix.book !== void 0) continue;
5520
- const first2 = prefix.sheet.toLowerCase() === lower2;
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) continue;
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
- token.prefix = renamed;
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 rewrite2(formula, visit) {
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 = rewrite2(formula, (token, next, out) => {
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 rewrite2(toStoredSyntax(formula), (token, next, out) => {
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
- const all2 = tokenize(formula);
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 host.workbook.sheets.findIndex((sheet) => sheet.name.toLowerCase() === lower2);
15690
+ return sheets.findIndex((sheet) => sheet.name.toLowerCase() === lower2);
15629
15691
  }
15630
15692
 
15631
15693
  // xlsx/formula/functions/info.ts