@odoo/o-spreadsheet 18.2.53 → 18.2.54

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.
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 18.2.53
6
- * @date 2026-05-12T12:17:43.785Z
7
- * @hash d8b08ba
5
+ * @version 18.2.54
6
+ * @date 2026-05-27T05:56:03.418Z
7
+ * @hash bd06c51
8
8
  */
9
9
 
10
10
  import { App, Component, blockDom, markRaw, onMounted, onPatched, onWillPatch, onWillStart, onWillUnmount, onWillUpdateProps, status, toRaw, useChildSubEnv, useComponent, useEffect, useEnv, useExternalListener, useRef, useState, useSubEnv, xml } from "@odoo/owl";
@@ -1345,6 +1345,7 @@ function getAlternatingColorsPalette(quantity) {
1345
1345
  else return ALTERNATING_COLORS_XL;
1346
1346
  }
1347
1347
  var ColorGenerator = class {
1348
+ preferredColors;
1348
1349
  currentColorIndex = 0;
1349
1350
  palette;
1350
1351
  constructor(paletteSize, preferredColors = []) {
@@ -1811,6 +1812,7 @@ const _t = function(s, ...values) {
1811
1812
  return sprintf(_translate(s), ...values);
1812
1813
  };
1813
1814
  var LazyTranslatedString = class extends String {
1815
+ values;
1814
1816
  constructor(str, values) {
1815
1817
  super(str);
1816
1818
  this.values = values;
@@ -3307,6 +3309,8 @@ const CellErrorType = {
3307
3309
  };
3308
3310
  const errorTypes = new Set(Object.values(CellErrorType));
3309
3311
  var EvaluationError = class {
3312
+ message;
3313
+ value;
3310
3314
  constructor(message = _t("Error"), value = CellErrorType.GenericError) {
3311
3315
  this.message = message;
3312
3316
  this.value = value;
@@ -3339,6 +3343,7 @@ var UnknownFunctionError = class extends EvaluationError {
3339
3343
  }
3340
3344
  };
3341
3345
  var SplillBlockedError = class extends EvaluationError {
3346
+ errorOriginPosition;
3342
3347
  constructor(message = _t("Spill range is not empty"), errorOriginPosition) {
3343
3348
  super(message, CellErrorType.SpilledBlocked);
3344
3349
  this.errorOriginPosition = errorOriginPosition;
@@ -5172,6 +5177,7 @@ function getFullReference(sheetName, xc) {
5172
5177
  //#endregion
5173
5178
  //#region src/helpers/range.ts
5174
5179
  var RangeImpl = class RangeImpl {
5180
+ getSheetSize;
5175
5181
  _zone;
5176
5182
  parts;
5177
5183
  invalidXc;
@@ -5859,6 +5865,8 @@ const selectPastedZone = (selection, sourceZones, pastedZones) => {
5859
5865
  //#endregion
5860
5866
  //#region src/clipboard_handlers/abstract_clipboard_handler.ts
5861
5867
  var ClipboardHandler = class {
5868
+ getters;
5869
+ dispatch;
5862
5870
  constructor(getters, dispatch) {
5863
5871
  this.getters = getters;
5864
5872
  this.dispatch = dispatch;
@@ -8266,6 +8274,7 @@ var DependencyContainer = class extends EventBus {
8266
8274
  }
8267
8275
  };
8268
8276
  var StoreFactory = class {
8277
+ get;
8269
8278
  pendingBuilds = /* @__PURE__ */ new Set();
8270
8279
  constructor(get) {
8271
8280
  this.get = get;
@@ -8310,6 +8319,7 @@ stores.inject(MyMetaStore, storeInstance);
8310
8319
  return MetaStore;
8311
8320
  }
8312
8321
  var DisposableStore = class {
8322
+ get;
8313
8323
  disposeCallbacks = [];
8314
8324
  constructor(get) {
8315
8325
  this.get = get;
@@ -9453,6 +9463,7 @@ function getScorecardConfiguration({ width, height }, runtime) {
9453
9463
  }, runtime).computeDesign();
9454
9464
  }
9455
9465
  var ScorecardChartConfigBuilder = class {
9466
+ runtime;
9456
9467
  context;
9457
9468
  width;
9458
9469
  height;
@@ -18107,6 +18118,7 @@ var AbstractComposerStore = class extends SpreadsheetStore {
18107
18118
  //#endregion
18108
18119
  //#region src/formulas/code_builder.ts
18109
18120
  var FunctionCodeBuilder = class {
18121
+ scope;
18110
18122
  code = "";
18111
18123
  constructor(scope = new Scope()) {
18112
18124
  this.scope = scope;
@@ -18122,6 +18134,8 @@ var FunctionCodeBuilder = class {
18122
18134
  }
18123
18135
  };
18124
18136
  var FunctionCodeImpl = class {
18137
+ scope;
18138
+ returnExpression;
18125
18139
  code;
18126
18140
  constructor(scope, code, returnExpression) {
18127
18141
  this.scope = scope;
@@ -18502,6 +18516,9 @@ function extractFormulaIdFromToken(tokenAtCursor) {
18502
18516
  function getFirstPivotFunction(tokens) {
18503
18517
  return getFunctionsFromTokens(tokens, PIVOT_FUNCTIONS)[0];
18504
18518
  }
18519
+ function getPivotFunctions(tokens) {
18520
+ return getFunctionsFromTokens(tokens, PIVOT_FUNCTIONS);
18521
+ }
18505
18522
  /**
18506
18523
  * Parse a spreadsheet formula and detect the number of PIVOT functions that are
18507
18524
  * present in the given formula.
@@ -19552,6 +19569,7 @@ const backgroundColorChartJSPlugin = {
19552
19569
  * Represent a raw XML string
19553
19570
  */
19554
19571
  var XMLString = class {
19572
+ xmlString;
19555
19573
  /**
19556
19574
  * @param xmlString should be a well formed, properly escaped XML string
19557
19575
  */
@@ -19670,6 +19688,10 @@ const FORCE_DEFAULT_ARGS_FUNCTIONS = {
19670
19688
  ROUNDDOWN: [{
19671
19689
  type: "NUMBER",
19672
19690
  value: 0
19691
+ }],
19692
+ IFERROR: [{
19693
+ type: "NUMBER",
19694
+ value: 0
19673
19695
  }]
19674
19696
  };
19675
19697
  /**
@@ -29585,6 +29607,10 @@ var Popover = class extends Component {
29585
29607
  }
29586
29608
  };
29587
29609
  var PopoverPositionContext = class {
29610
+ anchorRect;
29611
+ containerRect;
29612
+ propsMaxSize;
29613
+ spreadsheetOffset;
29588
29614
  constructor(anchorRect, containerRect, propsMaxSize, spreadsheetOffset) {
29589
29615
  this.anchorRect = anchorRect;
29590
29616
  this.containerRect = containerRect;
@@ -32623,7 +32649,7 @@ function getVisiblePivotCellPositions(getters, pivotId) {
32623
32649
  col,
32624
32650
  row
32625
32651
  };
32626
- if (pivotId === getters.getPivotIdFromPosition(position)) positions.push(position);
32652
+ if (getters.getPivotIdsFromPosition(position).includes(pivotId)) positions.push(position);
32627
32653
  }
32628
32654
  return positions;
32629
32655
  }
@@ -33401,6 +33427,7 @@ var DOMDndHelper = class {
33401
33427
  }
33402
33428
  };
33403
33429
  var ContainerWrapper = class {
33430
+ el;
33404
33431
  constructor(el) {
33405
33432
  this.el = el;
33406
33433
  }
@@ -33486,6 +33513,9 @@ var FocusStore = class {
33486
33513
  * This plugin handles this internal state.
33487
33514
  */
33488
33515
  var SelectionInputStore = class extends SpreadsheetStore {
33516
+ initialRanges;
33517
+ inputHasSingleRange;
33518
+ colors;
33489
33519
  mutators = [
33490
33520
  "resetWithRanges",
33491
33521
  "focusById",
@@ -36398,6 +36428,7 @@ var Composer = class extends Component {
36398
36428
  //#endregion
36399
36429
  //#region src/components/composer/standalone_composer/standalone_composer_store.ts
36400
36430
  var StandaloneComposerStore = class extends AbstractComposerStore {
36431
+ args;
36401
36432
  constructor(get, args) {
36402
36433
  super(get);
36403
36434
  this.args = args;
@@ -39972,6 +40003,8 @@ var MoreFormatsPanel = class extends Component {
39972
40003
  //#endregion
39973
40004
  //#region src/components/side_panel/pivot/pivot_measure_display_panel/pivot_measure_display_panel_store.ts
39974
40005
  var PivotMeasureDisplayPanelStore = class extends SpreadsheetStore {
40006
+ pivotId;
40007
+ initialMeasure;
39975
40008
  mutators = [
39976
40009
  "cancelMeasureDisplayEdition",
39977
40010
  "updateMeasureDisplayType",
@@ -41010,13 +41043,30 @@ function createMeasure(fields, measure) {
41010
41043
  } : fields[fieldName];
41011
41044
  const aggregator = measure.aggregator;
41012
41045
  return {
41046
+ /**
41047
+ * Get the id of the measure, as it is stored in the pivot formula
41048
+ */
41013
41049
  id: measure.id,
41050
+ /**
41051
+ * Display name of the measure
41052
+ * e.g. "__count" -> "Count", "amount_total" -> "Total Amount"
41053
+ */
41014
41054
  get displayName() {
41015
41055
  return measure.userDefinedName ?? field?.string ?? measure.fieldName;
41016
41056
  },
41017
41057
  userDefinedName: measure.userDefinedName,
41058
+ /**
41059
+ * Get the name of the field of the measure
41060
+ */
41018
41061
  fieldName,
41062
+ /**
41063
+ * Get the aggregator of the measure
41064
+ */
41019
41065
  aggregator,
41066
+ /**
41067
+ * Get the type of the measure field
41068
+ * e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
41069
+ */
41020
41070
  type: fieldName === "__count" ? "integer" : field?.type ?? "integer",
41021
41071
  isValid: !!(field || measure.computedBy),
41022
41072
  isHidden: measure.isHidden,
@@ -41030,10 +41080,30 @@ function createPivotDimension(fields, dimension) {
41030
41080
  const type = field?.type ?? "integer";
41031
41081
  const granularity = field && isDateOrDatetimeField(field) ? dimension.granularity : void 0;
41032
41082
  return {
41083
+ /**
41084
+ * Get the display name of the dimension
41085
+ * e.g. "stage_id" -> "Stage", "create_date:month" -> "Create Date"
41086
+ */
41033
41087
  displayName: field?.string ?? dimension.fieldName,
41088
+ /**
41089
+ * Get the name of the dimension, as it is stored in the pivot formula
41090
+ * e.g. "stage_id", "create_date:month"
41091
+ */
41034
41092
  nameWithGranularity: dimension.fieldName + (granularity ? `:${granularity}` : ""),
41093
+ /**
41094
+ * Get the name of the field of the dimension
41095
+ * e.g. "stage_id" -> "stage_id", "create_date:month" -> "create_date"
41096
+ */
41035
41097
  fieldName: dimension.fieldName,
41098
+ /**
41099
+ * Get the aggregate operator of the dimension
41100
+ * e.g. "stage_id" -> undefined, "create_date:month" -> "month"
41101
+ */
41036
41102
  granularity,
41103
+ /**
41104
+ * Get the type of the field of the dimension
41105
+ * e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
41106
+ */
41037
41107
  type,
41038
41108
  order: dimension.order,
41039
41109
  isValid: !!field
@@ -42073,6 +42143,7 @@ function adaptPivotRange(range, applyChange) {
42073
42143
  //#endregion
42074
42144
  //#region src/components/side_panel/pivot/pivot_side_panel/pivot_side_panel_store.ts
42075
42145
  var PivotSidePanelStore = class extends SpreadsheetStore {
42146
+ pivotId;
42076
42147
  mutators = [
42077
42148
  "reset",
42078
42149
  "deferUpdates",
@@ -49574,6 +49645,11 @@ var CellPlugin = class extends CorePlugin {
49574
49645
  }
49575
49646
  };
49576
49647
  var FormulaCellWithDependencies = class {
49648
+ id;
49649
+ format;
49650
+ style;
49651
+ sheetId;
49652
+ getRangeString;
49577
49653
  isFormula = true;
49578
49654
  compiledFormula;
49579
49655
  constructor(id, compiledFormula, format, style, dependencies, sheetId, getRangeString) {
@@ -49608,6 +49684,10 @@ var FormulaCellWithDependencies = class {
49608
49684
  }
49609
49685
  };
49610
49686
  var RangeReferenceToken = class {
49687
+ ranges;
49688
+ rangeIndex;
49689
+ sheetId;
49690
+ getRangeString;
49611
49691
  type = "REFERENCE";
49612
49692
  constructor(ranges, rangeIndex, sheetId, getRangeString) {
49613
49693
  this.ranges = ranges;
@@ -53504,6 +53584,8 @@ function buildCompilationParameters(context, getters, computeCell) {
53504
53584
  return new CompilationParametersBuilder(context, getters, computeCell).getParameters();
53505
53585
  }
53506
53586
  var CompilationParametersBuilder = class {
53587
+ getters;
53588
+ computeCell;
53507
53589
  evalContext;
53508
53590
  rangeCache = {};
53509
53591
  constructor(context, getters, computeCell) {
@@ -53957,6 +54039,7 @@ var ZoneRBush = class extends import_rbush_min.default {
53957
54039
  * It uses an R-Tree data structure to efficiently find dependent cells.
53958
54040
  */
53959
54041
  var FormulaDependencyGraph = class {
54042
+ createEmptyPositionSet;
53960
54043
  dependencies = new PositionMap();
53961
54044
  rTree;
53962
54045
  constructor(createEmptyPositionSet, data = []) {
@@ -54258,6 +54341,7 @@ const MAX_ITERATION = 30;
54258
54341
  const ERROR_CYCLE_CELL = Object.freeze(createEvaluatedCell(new CircularDependencyError()));
54259
54342
  const EMPTY_CELL = Object.freeze(createEvaluatedCell({ value: null }));
54260
54343
  var Evaluator = class {
54344
+ context;
54261
54345
  getters;
54262
54346
  compilationParams;
54263
54347
  evaluatedCells = new PositionMap();
@@ -56240,6 +56324,7 @@ var PivotUIPlugin = class extends CoreViewPlugin {
56240
56324
  "getPivot",
56241
56325
  "getFirstPivotFunction",
56242
56326
  "getPivotIdFromPosition",
56327
+ "getPivotIdsFromPosition",
56243
56328
  "getPivotCellFromPosition",
56244
56329
  "generateNewCalculatedMeasureName",
56245
56330
  "isPivotUnused",
@@ -56297,37 +56382,52 @@ var PivotUIPlugin = class extends CoreViewPlugin {
56297
56382
  }
56298
56383
  }
56299
56384
  /**
56300
- * Get the id of the pivot at the given position. Returns undefined if there
56385
+ * Get the id of the first pivot in the formula at the given position. Returns undefined if there
56301
56386
  * is no pivot at this position
56302
56387
  */
56303
56388
  getPivotIdFromPosition(position) {
56389
+ return this.getPivotIdsFromPosition(position)[0];
56390
+ }
56391
+ /**
56392
+ * Get all of the ids of the pivot present in the formula at the given position.
56393
+ */
56394
+ getPivotIdsFromPosition(position) {
56304
56395
  const cell = this.getters.getCorrespondingFormulaCell(position);
56305
- if (cell && cell.isFormula) {
56306
- const pivotFunction = this.getFirstPivotFunction(position.sheetId, cell.compiledFormula.tokens);
56307
- if (pivotFunction) {
56308
- const pivotId = pivotFunction.args[0]?.toString();
56309
- return pivotId && this.getters.getPivotId(pivotId);
56310
- }
56311
- }
56396
+ if (cell && cell.isFormula) return this.getPivotIdsFromFormula(position.sheetId, cell.compiledFormula);
56397
+ return [];
56398
+ }
56399
+ getPivotIdsFromFormula(sheetId, formula) {
56400
+ return this.getPivotFunctions(sheetId, formula.tokens).map((pivotFunction) => {
56401
+ const pivotId = pivotFunction.args[0]?.toString();
56402
+ return pivotId && this.getters.getPivotId(pivotId);
56403
+ }).filter(isDefined);
56312
56404
  }
56313
56405
  isSpillPivotFormula(position) {
56314
56406
  const cell = this.getters.getCorrespondingFormulaCell(position);
56315
56407
  if (cell && cell.isFormula) return this.getFirstPivotFunction(position.sheetId, cell.compiledFormula.tokens)?.functionName === "PIVOT";
56316
56408
  return false;
56317
56409
  }
56318
- getFirstPivotFunction(sheetId, tokens) {
56319
- const pivotFunction = getFirstPivotFunction(tokens);
56320
- if (!pivotFunction) return;
56321
- const { functionName, args } = pivotFunction;
56322
- return {
56323
- functionName,
56324
- args: args.map((argAst) => {
56410
+ getPivotFunctions(sheetId, tokens) {
56411
+ const pivotFunctions = getPivotFunctions(tokens);
56412
+ if (!pivotFunctions.length) return [];
56413
+ const evaluatedPivotFunctions = [];
56414
+ for (const pivotFunction of pivotFunctions) {
56415
+ const { functionName, args } = pivotFunction;
56416
+ const evaluatedArgs = args.map((argAst) => {
56325
56417
  if (argAst.type === "EMPTY") return;
56326
56418
  else if (argAst.type === "STRING" || argAst.type === "BOOLEAN" || argAst.type === "NUMBER") return argAst.value;
56327
56419
  const argsString = astToFormula(argAst);
56328
56420
  return this.getters.evaluateFormula(sheetId, argsString);
56329
- })
56330
- };
56421
+ });
56422
+ evaluatedPivotFunctions.push({
56423
+ functionName,
56424
+ args: evaluatedArgs
56425
+ });
56426
+ }
56427
+ return evaluatedPivotFunctions;
56428
+ }
56429
+ getFirstPivotFunction(sheetId, tokens) {
56430
+ return this.getPivotFunctions(sheetId, tokens)[0];
56331
56431
  }
56332
56432
  /**
56333
56433
  * Returns the domain args of a pivot formula from a position.
@@ -56421,8 +56521,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
56421
56521
  const unusedPivots = new Set(this.getters.getPivotIds());
56422
56522
  for (const sheetId of this.getters.getSheetIds()) for (const cellId in this.getters.getCells(sheetId)) {
56423
56523
  const position = this.getters.getCellPosition(cellId);
56424
- const pivotId = this.getPivotIdFromPosition(position);
56425
- if (pivotId) {
56524
+ const pivotIds = this.getPivotIdsFromPosition(position);
56525
+ for (const pivotId of pivotIds) {
56426
56526
  unusedPivots.delete(pivotId);
56427
56527
  if (!unusedPivots.size) {
56428
56528
  this.unusedPivots = [];
@@ -56430,6 +56530,21 @@ var PivotUIPlugin = class extends CoreViewPlugin {
56430
56530
  }
56431
56531
  }
56432
56532
  }
56533
+ for (const pivotId of this.getters.getPivotIds()) {
56534
+ const pivot = this.getters.getPivot(pivotId);
56535
+ for (const measure of pivot.definition.measures) if (measure.computedBy) {
56536
+ const { sheetId } = measure.computedBy;
56537
+ const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
56538
+ const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
56539
+ for (const relatedPivotId of relatedPivotIds) {
56540
+ unusedPivots.delete(relatedPivotId);
56541
+ if (!unusedPivots.size) {
56542
+ this.unusedPivots = [];
56543
+ return [];
56544
+ }
56545
+ }
56546
+ }
56547
+ }
56433
56548
  this.unusedPivots = [...unusedPivots];
56434
56549
  return this.unusedPivots;
56435
56550
  }
@@ -57582,6 +57697,8 @@ function transformPositionWithMerge(toTransform, executed) {
57582
57697
  //#endregion
57583
57698
  //#region src/collaborative/revisions.ts
57584
57699
  var Revision = class {
57700
+ rootCommand;
57701
+ timestamp;
57585
57702
  id;
57586
57703
  clientId;
57587
57704
  _commands = [];
@@ -57618,6 +57735,9 @@ var Revision = class {
57618
57735
  //#region src/collaborative/session.ts
57619
57736
  var ClientDisconnectedError = class extends Error {};
57620
57737
  var Session = class extends EventBus {
57738
+ revisions;
57739
+ transportService;
57740
+ serverRevisionId;
57621
57741
  /**
57622
57742
  * Positions of the others client.
57623
57743
  */
@@ -61057,6 +61177,9 @@ var GridSelectionPlugin = class extends UIPlugin {
61057
61177
  //#endregion
61058
61178
  //#region src/helpers/internal_viewport.ts
61059
61179
  var InternalViewport = class {
61180
+ getters;
61181
+ sheetId;
61182
+ boundaries;
61060
61183
  top;
61061
61184
  bottom;
61062
61185
  left;
@@ -64270,6 +64393,7 @@ function instantiateClipboard() {
64270
64393
  return new WebClipboardWrapper(navigator.clipboard);
64271
64394
  }
64272
64395
  var WebClipboardWrapper = class {
64396
+ clipboard;
64273
64397
  constructor(clipboard) {
64274
64398
  this.clipboard = clipboard;
64275
64399
  }
@@ -64748,6 +64872,8 @@ function inverseCommand(cmd) {
64748
64872
  * @param operations initial operations
64749
64873
  */
64750
64874
  var Branch = class Branch {
64875
+ buildTransformation;
64876
+ operations;
64751
64877
  constructor(buildTransformation, operations = []) {
64752
64878
  this.buildTransformation = buildTransformation;
64753
64879
  this.operations = operations;
@@ -64864,6 +64990,8 @@ var Branch = class Branch {
64864
64990
  * to revert it).
64865
64991
  */
64866
64992
  var Operation = class {
64993
+ id;
64994
+ data;
64867
64995
  constructor(id, data) {
64868
64996
  this.id = id;
64869
64997
  this.data = data;
@@ -64873,6 +65001,8 @@ var Operation = class {
64873
65001
  }
64874
65002
  };
64875
65003
  var LazyOperation = class LazyOperation {
65004
+ id;
65005
+ lazyData;
64876
65006
  constructor(id, lazyData) {
64877
65007
  this.id = id;
64878
65008
  this.lazyData = lazyData;
@@ -64898,6 +65028,7 @@ var LazyOperation = class LazyOperation {
64898
65028
  * ```
64899
65029
  */
64900
65030
  var OperationSequence = class OperationSequence {
65031
+ operations;
64901
65032
  constructor(operations) {
64902
65033
  this.operations = operations;
64903
65034
  }
@@ -64973,6 +65104,7 @@ var OperationSequence = class OperationSequence {
64973
65104
  *
64974
65105
  */
64975
65106
  var Tree = class {
65107
+ buildTransformation;
64976
65108
  branches;
64977
65109
  branchingOperationIds = /* @__PURE__ */ new Map();
64978
65110
  constructor(buildTransformation, initialBranch) {
@@ -65555,6 +65687,7 @@ var EventStream = class {
65555
65687
  * with the new selected anchor
65556
65688
  */
65557
65689
  var SelectionStreamProcessorImpl = class {
65690
+ getters;
65558
65691
  stream;
65559
65692
  /**
65560
65693
  * "Active" anchor used as a reference to compute new anchors
@@ -68802,6 +68935,6 @@ const chartHelpers = {
68802
68935
  //#endregion
68803
68936
  export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, CommandResult, CorePlugin, CoreViewPlugin, DispatchResult, EvaluationError, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, chartHelpers, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, hooks, invalidateCFEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
68804
68937
 
68805
- __info__.version = "18.2.53";
68806
- __info__.date = "2026-05-12T12:17:43.785Z";
68807
- __info__.hash = "d8b08ba";
68938
+ __info__.version = "18.2.54";
68939
+ __info__.date = "2026-05-27T05:56:03.418Z";
68940
+ __info__.hash = "bd06c51";