ooxml-core 1.2.0 → 1.3.0
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-ZPJNHEZZ.mjs} +2 -2
- package/dist/automation/index.cjs +3294 -661
- package/dist/automation/index.mjs +3294 -661
- 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-BB55ASTX.mjs} +3 -3
- package/dist/{chunk-CQQAPUAG.mjs → chunk-H4TPDZV4.mjs} +11 -9
- package/dist/{chunk-VYTA2OUN.mjs → chunk-IVDC75E5.mjs} +1 -1
- package/dist/{chunk-FI4RSJ24.mjs → chunk-QPQDLSJQ.mjs} +1 -1
- package/dist/{chunk-XCZ7U3GZ.mjs → chunk-XGLKW3JJ.mjs} +13 -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 +29 -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 +29 -17
- package/dist/pptx/cli/index.mjs +4 -4
- package/dist/pptx/converter/index.mjs +2 -2
- package/dist/pptx/index.cjs +29 -17
- package/dist/pptx/index.mjs +5 -5
- package/dist/teams/index.cjs +176 -92
- package/dist/teams/index.mjs +176 -92
- package/dist/visio/clipboard-resources.d.ts +11 -0
- package/dist/visio/clipboard-resources.d.ts.map +1 -0
- package/dist/visio/clipboard-types.d.ts +26 -0
- package/dist/visio/clipboard-types.d.ts.map +1 -0
- package/dist/visio/clipboard-xml.d.ts +8 -0
- package/dist/visio/clipboard-xml.d.ts.map +1 -0
- package/dist/visio/clipboard.d.ts +7 -0
- package/dist/visio/clipboard.d.ts.map +1 -0
- package/dist/visio/create-document.d.ts +8 -0
- package/dist/visio/create-document.d.ts.map +1 -0
- package/dist/visio/edit-commands.d.ts +19 -2
- package/dist/visio/edit-commands.d.ts.map +1 -1
- package/dist/visio/edit-delete.d.ts +9 -0
- package/dist/visio/edit-delete.d.ts.map +1 -0
- package/dist/visio/edit-duplicate-commands.d.ts +14 -0
- package/dist/visio/edit-duplicate-commands.d.ts.map +1 -0
- package/dist/visio/edit-duplicate-scope.d.ts +4 -0
- package/dist/visio/edit-duplicate-scope.d.ts.map +1 -0
- package/dist/visio/edit-duplicate.d.ts +10 -0
- package/dist/visio/edit-duplicate.d.ts.map +1 -0
- package/dist/visio/edit-formatting-cell-admission.d.ts +3 -0
- package/dist/visio/edit-formatting-cell-admission.d.ts.map +1 -0
- package/dist/visio/edit-formatting-commands.d.ts +46 -0
- package/dist/visio/edit-formatting-commands.d.ts.map +1 -0
- package/dist/visio/edit-formatting-font.d.ts +6 -0
- package/dist/visio/edit-formatting-font.d.ts.map +1 -0
- package/dist/visio/edit-formatting-paint-scope.d.ts +6 -0
- package/dist/visio/edit-formatting-paint-scope.d.ts.map +1 -0
- package/dist/visio/edit-formatting-paint.d.ts +6 -0
- package/dist/visio/edit-formatting-paint.d.ts.map +1 -0
- package/dist/visio/edit-formatting-rows.d.ts +14 -0
- package/dist/visio/edit-formatting-rows.d.ts.map +1 -0
- package/dist/visio/edit-formatting-scope.d.ts +6 -0
- package/dist/visio/edit-formatting-scope.d.ts.map +1 -0
- package/dist/visio/edit-formatting-text.d.ts +8 -0
- package/dist/visio/edit-formatting-text.d.ts.map +1 -0
- package/dist/visio/edit-formatting.d.ts +12 -0
- package/dist/visio/edit-formatting.d.ts.map +1 -0
- package/dist/visio/edit-geometry.d.ts.map +1 -1
- package/dist/visio/edit-paste-commands.d.ts +15 -0
- package/dist/visio/edit-paste-commands.d.ts.map +1 -0
- package/dist/visio/edit-paste.d.ts +5 -0
- package/dist/visio/edit-paste.d.ts.map +1 -0
- package/dist/visio/edit-recalculate.d.ts +3 -1
- package/dist/visio/edit-recalculate.d.ts.map +1 -1
- package/dist/visio/edit-resize-anchor.d.ts +8 -0
- package/dist/visio/edit-resize-anchor.d.ts.map +1 -0
- package/dist/visio/edit-scope.d.ts.map +1 -1
- package/dist/visio/edit-shape-create.d.ts +1 -1
- package/dist/visio/edit-shape-create.d.ts.map +1 -1
- package/dist/visio/edit-shape-order.d.ts +7 -0
- package/dist/visio/edit-shape-order.d.ts.map +1 -0
- package/dist/visio/edit-style-admission.d.ts +17 -0
- package/dist/visio/edit-style-admission.d.ts.map +1 -0
- package/dist/visio/edit-text-scope.d.ts +7 -0
- package/dist/visio/edit-text-scope.d.ts.map +1 -0
- package/dist/visio/edit-text.d.ts +1 -1
- package/dist/visio/edit-text.d.ts.map +1 -1
- package/dist/visio/edit.d.ts +1 -1
- package/dist/visio/edit.d.ts.map +1 -1
- package/dist/visio/index.cjs +3245 -1077
- package/dist/visio/index.d.ts +3 -1
- package/dist/visio/index.d.ts.map +1 -1
- package/dist/visio/index.mjs +3241 -1079
- package/dist/visio/line-pattern.d.ts +1 -1
- package/dist/visio/line-pattern.d.ts.map +1 -1
- package/dist/visio/line-style.d.ts.map +1 -1
- package/dist/visio/model.d.ts +23 -3
- package/dist/visio/model.d.ts.map +1 -1
- package/dist/visio/parser.d.ts.map +1 -1
- package/dist/visio/plain-text.d.ts +5 -0
- package/dist/visio/plain-text.d.ts.map +1 -0
- package/dist/visio/resize-anchor.d.ts +27 -0
- package/dist/visio/resize-anchor.d.ts.map +1 -0
- package/dist/visio/source-paint.d.ts +5 -0
- package/dist/visio/source-paint.d.ts.map +1 -0
- package/dist/visio/style.d.ts.map +1 -1
- package/dist/visio/theme-root.d.ts.map +1 -1
- package/dist/visio/ui/contract.d.ts +10 -6
- package/dist/visio/ui/contract.d.ts.map +1 -1
- package/dist/visio/ui/draw-plan.d.ts +32 -0
- package/dist/visio/ui/draw-plan.d.ts.map +1 -0
- package/dist/visio/ui/edit-commands.d.ts.map +1 -1
- package/dist/visio/ui/formatting.d.ts +28 -0
- package/dist/visio/ui/formatting.d.ts.map +1 -0
- package/dist/visio/ui/index.cjs +1305 -15
- package/dist/visio/ui/index.d.ts +15 -0
- package/dist/visio/ui/index.d.ts.map +1 -1
- package/dist/visio/ui/index.mjs +1261 -16
- package/dist/visio/ui/line-dash.d.ts +4 -0
- package/dist/visio/ui/line-dash.d.ts.map +1 -0
- package/dist/visio/ui/marquee.d.ts +15 -0
- package/dist/visio/ui/marquee.d.ts.map +1 -0
- package/dist/visio/ui/page-edit.d.ts.map +1 -1
- package/dist/visio/ui/scene-validation.d.ts.map +1 -1
- package/dist/visio/ui/selection.d.ts +12 -0
- package/dist/visio/ui/selection.d.ts.map +1 -0
- package/dist/visio/ui/shape-arrange.d.ts +17 -0
- package/dist/visio/ui/shape-arrange.d.ts.map +1 -0
- package/dist/visio/ui/shape-clipboard.d.ts +10 -0
- package/dist/visio/ui/shape-clipboard.d.ts.map +1 -0
- package/dist/visio/ui/shape-duplicate.d.ts +5 -0
- package/dist/visio/ui/shape-duplicate.d.ts.map +1 -0
- package/dist/visio/ui/shape-formatting.d.ts +14 -0
- package/dist/visio/ui/shape-formatting.d.ts.map +1 -0
- package/dist/visio/ui/shape-move.d.ts +14 -0
- package/dist/visio/ui/shape-move.d.ts.map +1 -0
- package/dist/visio/ui/shape-order.d.ts +4 -0
- package/dist/visio/ui/shape-order.d.ts.map +1 -0
- package/dist/visio/ui/shape-resize.d.ts +61 -0
- package/dist/visio/ui/shape-resize.d.ts.map +1 -0
- package/dist/visio/ui/size-position.d.ts +19 -0
- package/dist/visio/ui/size-position.d.ts.map +1 -0
- package/dist/visio/ui/snapshot-scene.d.ts.map +1 -1
- package/dist/visio/ui/svg-stroke.d.ts +8 -0
- package/dist/visio/ui/svg-stroke.d.ts.map +1 -0
- package/dist/visio/ui/text-replace-selection.d.ts +9 -0
- package/dist/visio/ui/text-replace-selection.d.ts.map +1 -0
- package/dist/visio/ui/text-replace-snapshot.d.ts +14 -0
- package/dist/visio/ui/text-replace-snapshot.d.ts.map +1 -0
- package/dist/visio/ui/text-replace-types.d.ts +48 -0
- package/dist/visio/ui/text-replace-types.d.ts.map +1 -0
- package/dist/visio/ui/text-replace.d.ts +18 -0
- package/dist/visio/ui/text-replace.d.ts.map +1 -0
- 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 +1087 -338
- package/dist/xlsx/index.mjs +1087 -339
- 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 +170 -99
- package/dist/xlsx/load/index.mjs +170 -99
- package/dist/xlsx/ui/index.cjs +1072 -332
- package/dist/xlsx/ui/index.mjs +1072 -332
- 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);
|
|
@@ -5193,14 +5193,13 @@ function splitSheets(text) {
|
|
|
5193
5193
|
if (book !== void 0) out.book = book;
|
|
5194
5194
|
return out;
|
|
5195
5195
|
}
|
|
5196
|
-
var PREFIX_AT = /(\[\d+\])?([A-Za-z0-9_.\u00A1-\uFFFF]+)(?::([A-Za-z0-9_.\u00A1-\uFFFF]+))?!/y;
|
|
5197
5196
|
function readPrefix(source2, at) {
|
|
5198
5197
|
const ch = source2[at];
|
|
5199
5198
|
if (ch === "'") {
|
|
5200
5199
|
const quoted = readQuoted(source2, at);
|
|
5201
5200
|
if (source2[at + quoted.length] !== "!") return void 0;
|
|
5202
|
-
const
|
|
5203
|
-
return { prefix: { text: source2.slice(at, at +
|
|
5201
|
+
const length2 = quoted.length + 1;
|
|
5202
|
+
return { prefix: { text: source2.slice(at, at + length2), ...splitSheets(quoted.name) }, length: length2 };
|
|
5204
5203
|
}
|
|
5205
5204
|
let i2 = at;
|
|
5206
5205
|
if (ch === "[") {
|
|
@@ -5209,13 +5208,23 @@ function readPrefix(source2, at) {
|
|
|
5209
5208
|
if (i2 === at + 1 || source2[i2] !== "]") return void 0;
|
|
5210
5209
|
i2++;
|
|
5211
5210
|
}
|
|
5211
|
+
const sheetFrom = i2;
|
|
5212
5212
|
while (i2 < source2.length && isSheetCharCode(source2.charCodeAt(i2))) i2++;
|
|
5213
|
-
if (
|
|
5214
|
-
|
|
5215
|
-
if (
|
|
5216
|
-
|
|
5217
|
-
|
|
5218
|
-
|
|
5213
|
+
if (i2 === sheetFrom) return void 0;
|
|
5214
|
+
let lastFrom = -1;
|
|
5215
|
+
if (source2[i2] === ":") {
|
|
5216
|
+
lastFrom = i2 + 1;
|
|
5217
|
+
i2 = lastFrom;
|
|
5218
|
+
while (i2 < source2.length && isSheetCharCode(source2.charCodeAt(i2))) i2++;
|
|
5219
|
+
if (i2 === lastFrom) return void 0;
|
|
5220
|
+
}
|
|
5221
|
+
if (source2[i2] !== "!") return void 0;
|
|
5222
|
+
if (ch !== "[" && lastFrom < 0 && isDigitCode(source2.charCodeAt(sheetFrom))) return void 0;
|
|
5223
|
+
const length = i2 + 1 - at;
|
|
5224
|
+
return {
|
|
5225
|
+
prefix: { text: source2.slice(at, at + length), ...splitSheets(source2.slice(at, i2)) },
|
|
5226
|
+
length
|
|
5227
|
+
};
|
|
5219
5228
|
}
|
|
5220
5229
|
function numberLiteral(text) {
|
|
5221
5230
|
if (text.length <= 15) return Number(text);
|
|
@@ -5380,7 +5389,7 @@ function readName(source2, at, start, prefix) {
|
|
|
5380
5389
|
}
|
|
5381
5390
|
var joinTokens = (tokens2) => tokens2.map((t) => t.text).join("");
|
|
5382
5391
|
|
|
5383
|
-
// xlsx/formula/
|
|
5392
|
+
// xlsx/formula/ref-text.ts
|
|
5384
5393
|
function safeTokens(formula) {
|
|
5385
5394
|
try {
|
|
5386
5395
|
return tokenize(formula);
|
|
@@ -5399,50 +5408,26 @@ function formatRefSpec(spec2) {
|
|
|
5399
5408
|
if (spec2.kind === "cell") return a2;
|
|
5400
5409
|
return `${a2}:${cornerText(spec2.end, spec2.kind)}`;
|
|
5401
5410
|
}
|
|
5402
|
-
function
|
|
5411
|
+
function rewriteRef(token, ref) {
|
|
5403
5412
|
const prefix = token.prefix?.text ?? "";
|
|
5404
5413
|
if (!ref) return `${prefix}#REF!`;
|
|
5405
5414
|
return `${prefix}${formatRefSpec(ref)}${token.spill ? "#" : ""}`;
|
|
5406
5415
|
}
|
|
5407
5416
|
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);
|
|
5417
|
+
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);
|
|
5418
|
+
function prefixText(prefix) {
|
|
5419
|
+
const sheets = prefix.sheet2 !== void 0 ? `${prefix.sheet}:${prefix.sheet2}` : prefix.sheet;
|
|
5420
|
+
const book = prefix.book !== void 0 ? `[${prefix.book}]` : "";
|
|
5421
|
+
const quote2 = needsQuote(prefix.sheet) || prefix.sheet2 !== void 0 && needsQuote(prefix.sheet2);
|
|
5422
|
+
return quote2 ? `'${(book + sheets).replace(/'/g, "''")}'!` : `${book}${sheets}!`;
|
|
5427
5423
|
}
|
|
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];
|
|
5424
|
+
|
|
5425
|
+
// xlsx/formula/shift-formula.ts
|
|
5426
|
+
var templates = /* @__PURE__ */ new Map();
|
|
5427
|
+
var MAX_TEMPLATES = 2e5;
|
|
5428
|
+
function remember(text, template) {
|
|
5429
|
+
if (templates.size >= MAX_TEMPLATES) templates.clear();
|
|
5430
|
+
templates.set(text, template);
|
|
5446
5431
|
}
|
|
5447
5432
|
function mergeSpacedAreas(tokens2) {
|
|
5448
5433
|
const out = [];
|
|
@@ -5469,63 +5454,145 @@ function mergeSpacedAreas(tokens2) {
|
|
|
5469
5454
|
}
|
|
5470
5455
|
return out;
|
|
5471
5456
|
}
|
|
5472
|
-
function
|
|
5473
|
-
|
|
5457
|
+
function templateOf(formula) {
|
|
5458
|
+
const cached = templates.get(formula);
|
|
5459
|
+
if (cached !== void 0) return cached;
|
|
5474
5460
|
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;
|
|
5461
|
+
let template = null;
|
|
5462
|
+
if (raw2) {
|
|
5463
|
+
template = [];
|
|
5464
|
+
let literal = "";
|
|
5465
|
+
for (const token of mergeSpacedAreas(raw2)) {
|
|
5466
|
+
if (token.kind !== "ref" && !(token.kind === "name" && token.prefix)) {
|
|
5467
|
+
literal += token.text;
|
|
5468
|
+
continue;
|
|
5469
|
+
}
|
|
5470
|
+
if (literal) template.push(literal);
|
|
5471
|
+
literal = "";
|
|
5472
|
+
const part = { kind: token.kind, text: token.text };
|
|
5473
|
+
if (token.prefix) {
|
|
5474
|
+
part.prefix = token.prefix;
|
|
5475
|
+
if (token.prefix.book === void 0) part.sheet = token.prefix.sheet.toLowerCase();
|
|
5476
|
+
}
|
|
5477
|
+
if (token.ref) part.ref = token.ref;
|
|
5478
|
+
if (token.spill) part.spill = true;
|
|
5479
|
+
template.push(part);
|
|
5500
5480
|
}
|
|
5501
|
-
if (
|
|
5502
|
-
token.text = rewrite(token, next);
|
|
5481
|
+
if (literal) template.push(literal);
|
|
5503
5482
|
}
|
|
5504
|
-
|
|
5483
|
+
remember(formula, template);
|
|
5484
|
+
return template;
|
|
5505
5485
|
}
|
|
5506
|
-
|
|
5507
|
-
|
|
5508
|
-
|
|
5509
|
-
|
|
5510
|
-
|
|
5511
|
-
|
|
5486
|
+
function rewriteTemplate(formula, rewrite2) {
|
|
5487
|
+
const template = templateOf(formula);
|
|
5488
|
+
if (!template) return formula;
|
|
5489
|
+
let next;
|
|
5490
|
+
for (let i2 = 0; i2 < template.length; i2++) {
|
|
5491
|
+
const part = template[i2];
|
|
5492
|
+
if (typeof part === "string") continue;
|
|
5493
|
+
const changed = rewrite2(part);
|
|
5494
|
+
if (!changed) continue;
|
|
5495
|
+
next ??= template.slice();
|
|
5496
|
+
next[i2] = changed;
|
|
5497
|
+
}
|
|
5498
|
+
if (!next) return formula;
|
|
5499
|
+
const text = next.map((part) => typeof part === "string" ? part : part.text).join("");
|
|
5500
|
+
remember(text, next);
|
|
5501
|
+
return text;
|
|
5502
|
+
}
|
|
5503
|
+
function shiftInterval(a2, b, at, count2, max) {
|
|
5504
|
+
if (count2 > 0) {
|
|
5505
|
+
const na2 = a2 >= at ? a2 + count2 : a2;
|
|
5506
|
+
const nb2 = b >= at ? b + count2 : b;
|
|
5507
|
+
if (nb2 > max) return na2 > max ? void 0 : [na2, max];
|
|
5508
|
+
return [na2, nb2];
|
|
5509
|
+
}
|
|
5510
|
+
const n = -count2;
|
|
5511
|
+
const last = at + n - 1;
|
|
5512
|
+
if (a2 >= at && b <= last) return void 0;
|
|
5513
|
+
const na = a2 < at ? a2 : a2 <= last ? at : a2 - n;
|
|
5514
|
+
const nb = b < at ? b : b <= last ? at - 1 : b - n;
|
|
5515
|
+
return [na, nb];
|
|
5516
|
+
}
|
|
5517
|
+
function shiftRef(ref, spec2) {
|
|
5518
|
+
const isRow = spec2.axis === "row";
|
|
5519
|
+
if (isRow && ref.kind === "cols" || !isRow && ref.kind === "rows") return ref;
|
|
5520
|
+
const startFirst = isRow ? ref.start.row <= ref.end.row : ref.start.col <= ref.end.col;
|
|
5521
|
+
const lo = startFirst ? ref.start : ref.end;
|
|
5522
|
+
const hi = startFirst ? ref.end : ref.start;
|
|
5523
|
+
const shifted = shiftInterval(
|
|
5524
|
+
isRow ? lo.row : lo.col,
|
|
5525
|
+
isRow ? hi.row : hi.col,
|
|
5526
|
+
spec2.at,
|
|
5527
|
+
spec2.count,
|
|
5528
|
+
isRow ? MAX_ROW : MAX_COL
|
|
5529
|
+
);
|
|
5530
|
+
if (!shifted) return void 0;
|
|
5531
|
+
const [a2, b] = shifted;
|
|
5532
|
+
const nlo = isRow ? { ...lo, row: a2 } : { ...lo, col: a2 };
|
|
5533
|
+
const nhi = isRow ? { ...hi, row: b } : { ...hi, col: b };
|
|
5534
|
+
const next = {
|
|
5535
|
+
kind: ref.kind,
|
|
5536
|
+
start: startFirst ? nlo : nhi,
|
|
5537
|
+
end: startFirst ? nhi : nlo
|
|
5538
|
+
};
|
|
5539
|
+
if (ref.kind === "cell") next.end = next.start;
|
|
5540
|
+
return sameSpec(next, ref) ? ref : next;
|
|
5541
|
+
}
|
|
5542
|
+
function shiftFormula(formula, formulaSheet, spec2) {
|
|
5543
|
+
if (spec2.count === 0) return formula;
|
|
5544
|
+
const sheet = spec2.sheet.toLowerCase();
|
|
5545
|
+
const own = formulaSheet.toLowerCase() === sheet;
|
|
5546
|
+
return rewriteTemplate(formula, (part) => {
|
|
5547
|
+
if (part.kind !== "ref" || !part.ref || (part.prefix ? part.sheet !== sheet : !own))
|
|
5548
|
+
return void 0;
|
|
5549
|
+
const next = shiftRef(part.ref, spec2);
|
|
5550
|
+
if (next === part.ref) return void 0;
|
|
5551
|
+
const out = { kind: "ref", text: rewriteRef(part, next) };
|
|
5552
|
+
if (part.prefix) out.prefix = part.prefix;
|
|
5553
|
+
if (part.sheet !== void 0) out.sheet = part.sheet;
|
|
5554
|
+
if (next) out.ref = next;
|
|
5555
|
+
if (part.spill) out.spill = true;
|
|
5556
|
+
return out;
|
|
5557
|
+
});
|
|
5512
5558
|
}
|
|
5513
5559
|
function renameSheetInFormula(formula, oldName, newName) {
|
|
5514
|
-
const tokens2 = safeTokens(formula);
|
|
5515
|
-
if (!tokens2) return formula;
|
|
5516
5560
|
const lower2 = oldName.toLowerCase();
|
|
5517
|
-
|
|
5518
|
-
const prefix =
|
|
5519
|
-
if (!prefix ||
|
|
5520
|
-
const first2 =
|
|
5561
|
+
return rewriteTemplate(formula, (part) => {
|
|
5562
|
+
const prefix = part.prefix;
|
|
5563
|
+
if (!prefix || part.sheet === void 0) return void 0;
|
|
5564
|
+
const first2 = part.sheet === lower2;
|
|
5521
5565
|
const second = prefix.sheet2?.toLowerCase() === lower2;
|
|
5522
|
-
if (!first2 && !second)
|
|
5566
|
+
if (!first2 && !second) return void 0;
|
|
5523
5567
|
const renamed = { ...prefix, sheet: first2 ? newName : prefix.sheet };
|
|
5524
5568
|
if (prefix.sheet2 !== void 0) renamed.sheet2 = second ? newName : prefix.sheet2;
|
|
5525
5569
|
const text = prefixText(renamed);
|
|
5526
|
-
token.text = text + token.text.slice(prefix.text.length);
|
|
5527
5570
|
renamed.text = text;
|
|
5528
|
-
|
|
5571
|
+
const out = { ...part, text: text + part.text.slice(prefix.text.length) };
|
|
5572
|
+
out.prefix = renamed;
|
|
5573
|
+
out.sheet = renamed.sheet.toLowerCase();
|
|
5574
|
+
return out;
|
|
5575
|
+
});
|
|
5576
|
+
}
|
|
5577
|
+
|
|
5578
|
+
// xlsx/formula/transform.ts
|
|
5579
|
+
function translateFormula(formula, dRow, dCol) {
|
|
5580
|
+
const tokens2 = safeTokens(formula);
|
|
5581
|
+
if (!tokens2) return formula;
|
|
5582
|
+
for (const token of tokens2) {
|
|
5583
|
+
if (token.kind !== "ref" || !token.ref) continue;
|
|
5584
|
+
const spec2 = token.ref;
|
|
5585
|
+
const move = (c2) => {
|
|
5586
|
+
const row2 = spec2.kind === "cols" || c2.rowAbs ? c2.row : c2.row + dRow;
|
|
5587
|
+
const col = spec2.kind === "rows" || c2.colAbs ? c2.col : c2.col + dCol;
|
|
5588
|
+
if (row2 < 0 || row2 > MAX_ROW || col < 0 || col > MAX_COL) return void 0;
|
|
5589
|
+
return { ...c2, row: row2, col };
|
|
5590
|
+
};
|
|
5591
|
+
const start = move(spec2.start);
|
|
5592
|
+
const end = move(spec2.end);
|
|
5593
|
+
const next = start && end ? { kind: spec2.kind, start, end } : void 0;
|
|
5594
|
+
if (next && sameSpec(next, spec2)) continue;
|
|
5595
|
+
token.text = rewriteRef(token, next);
|
|
5529
5596
|
}
|
|
5530
5597
|
return joinTokens(tokens2);
|
|
5531
5598
|
}
|
|
@@ -5614,7 +5681,7 @@ var FUTURE_FUNCTIONS = new Set(
|
|
|
5614
5681
|
"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
5682
|
);
|
|
5616
5683
|
var WORKSHEET_PREFIXED = /* @__PURE__ */ new Set(["FILTER", "SORT"]);
|
|
5617
|
-
function
|
|
5684
|
+
function rewrite(formula, visit) {
|
|
5618
5685
|
const out = [];
|
|
5619
5686
|
let i2 = 0;
|
|
5620
5687
|
while (i2 < formula.length) {
|
|
@@ -5657,7 +5724,7 @@ function rewrite2(formula, visit) {
|
|
|
5657
5724
|
}
|
|
5658
5725
|
function stripFuturePrefixes(formula) {
|
|
5659
5726
|
if (!formula.includes("_xl")) return formula;
|
|
5660
|
-
const plain2 =
|
|
5727
|
+
const plain2 = rewrite(formula, (token, next, out) => {
|
|
5661
5728
|
if (!next.startsWith("(")) return false;
|
|
5662
5729
|
const stripped = token.replace(/^(_xlfn\.)?(_xlws\.)?/i, "");
|
|
5663
5730
|
if (stripped === token) return false;
|
|
@@ -5667,7 +5734,7 @@ function stripFuturePrefixes(formula) {
|
|
|
5667
5734
|
return fromStoredSyntax(plain2);
|
|
5668
5735
|
}
|
|
5669
5736
|
function addFuturePrefixes(formula) {
|
|
5670
|
-
return
|
|
5737
|
+
return rewrite(toStoredSyntax(formula), (token, next, out) => {
|
|
5671
5738
|
if (!next.startsWith("(")) return false;
|
|
5672
5739
|
const upper2 = token.toUpperCase();
|
|
5673
5740
|
if (!FUTURE_FUNCTIONS.has(upper2)) return false;
|
|
@@ -12195,7 +12262,9 @@ var PREC_INTERSECT = 9;
|
|
|
12195
12262
|
var PREC_RANGE = 10;
|
|
12196
12263
|
var OPERAND_START = /* @__PURE__ */ new Set(["ref", "name", "func", "open", "structured"]);
|
|
12197
12264
|
function parseFormula(formula) {
|
|
12198
|
-
|
|
12265
|
+
return parseTokens(tokenize(formula));
|
|
12266
|
+
}
|
|
12267
|
+
function parseTokens(all2) {
|
|
12199
12268
|
const tokens2 = [];
|
|
12200
12269
|
const wsBefore = [];
|
|
12201
12270
|
let sawWs = false;
|
|
@@ -15624,8 +15693,10 @@ var FINANCIAL_FUNCTIONS = [
|
|
|
15624
15693
|
|
|
15625
15694
|
// xlsx/formula/references.ts
|
|
15626
15695
|
function sheetIndex(host, name) {
|
|
15696
|
+
const sheets = host.workbook.sheets;
|
|
15697
|
+
for (let i2 = 0; i2 < sheets.length; i2++) if (sheets[i2]?.name === name) return i2;
|
|
15627
15698
|
const lower2 = name.toLowerCase();
|
|
15628
|
-
return
|
|
15699
|
+
return sheets.findIndex((sheet) => sheet.name.toLowerCase() === lower2);
|
|
15629
15700
|
}
|
|
15630
15701
|
|
|
15631
15702
|
// xlsx/formula/functions/info.ts
|