@odoo/o-spreadsheet 18.3.47 → 18.3.49

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.3.47
6
- * @date 2026-05-12T12:18:07.038Z
7
- * @hash 8b8bc44
5
+ * @version 18.3.49
6
+ * @date 2026-05-27T05:57:05.809Z
7
+ * @hash fc34456
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";
@@ -1350,6 +1350,7 @@ function getAlternatingColorsPalette(quantity) {
1350
1350
  else return ALTERNATING_COLORS_XL;
1351
1351
  }
1352
1352
  var ColorGenerator = class {
1353
+ preferredColors;
1353
1354
  currentColorIndex = 0;
1354
1355
  palette;
1355
1356
  constructor(paletteSize, preferredColors = []) {
@@ -2931,6 +2932,7 @@ const _t = function(s, ...values) {
2931
2932
  return sprintf(_translate(s), ...values);
2932
2933
  };
2933
2934
  var LazyTranslatedString = class extends String {
2935
+ values;
2934
2936
  constructor(str, values) {
2935
2937
  super(str);
2936
2938
  this.values = values;
@@ -3329,6 +3331,8 @@ const CellErrorType = {
3329
3331
  };
3330
3332
  const errorTypes = new Set(Object.values(CellErrorType));
3331
3333
  var EvaluationError = class {
3334
+ message;
3335
+ value;
3332
3336
  constructor(message = _t("Error"), value = CellErrorType.GenericError) {
3333
3337
  this.message = message;
3334
3338
  this.value = value;
@@ -3361,6 +3365,7 @@ var UnknownFunctionError = class extends EvaluationError {
3361
3365
  }
3362
3366
  };
3363
3367
  var SplillBlockedError = class extends EvaluationError {
3368
+ errorOriginPosition;
3364
3369
  constructor(message = _t("Spill range is not empty"), errorOriginPosition) {
3365
3370
  super(message, CellErrorType.SpilledBlocked);
3366
3371
  this.errorOriginPosition = errorOriginPosition;
@@ -5512,8 +5517,13 @@ function getApplyRangeChangeAddColRow(cmd) {
5512
5517
  changeType: "NONE",
5513
5518
  range
5514
5519
  };
5520
+ const isUnboundedAtEnd = range.unboundedZone[end] === void 0;
5521
+ if (isUnboundedAtEnd && !range.unboundedZone.hasHeader) return {
5522
+ changeType: "RESIZE",
5523
+ range: createAdaptedRange(range, dimension, "RESIZE", cmd.quantity)
5524
+ };
5515
5525
  if (cmd.position === "after") {
5516
- if (range.zone[start] <= cmd.base && cmd.base < range.zone[end]) return {
5526
+ if (range.zone[start] <= cmd.base && (cmd.base < range.zone[end] || isUnboundedAtEnd)) return {
5517
5527
  changeType: "RESIZE",
5518
5528
  range: createAdaptedRange(range, dimension, "RESIZE", cmd.quantity)
5519
5529
  };
@@ -6157,6 +6167,8 @@ const selectPastedZone = (selection, sourceZones, pastedZones) => {
6157
6167
  //#endregion
6158
6168
  //#region src/clipboard_handlers/abstract_clipboard_handler.ts
6159
6169
  var ClipboardHandler = class {
6170
+ getters;
6171
+ dispatch;
6160
6172
  constructor(getters, dispatch) {
6161
6173
  this.getters = getters;
6162
6174
  this.dispatch = dispatch;
@@ -8582,6 +8594,7 @@ var DependencyContainer = class extends EventBus {
8582
8594
  }
8583
8595
  };
8584
8596
  var StoreFactory = class {
8597
+ get;
8585
8598
  pendingBuilds = /* @__PURE__ */ new Set();
8586
8599
  constructor(get) {
8587
8600
  this.get = get;
@@ -8626,6 +8639,7 @@ stores.inject(MyMetaStore, storeInstance);
8626
8639
  return MetaStore;
8627
8640
  }
8628
8641
  var DisposableStore = class {
8642
+ get;
8629
8643
  disposeCallbacks = [];
8630
8644
  constructor(get) {
8631
8645
  this.get = get;
@@ -16904,6 +16918,7 @@ function hasStringMessage(obj) {
16904
16918
  //#endregion
16905
16919
  //#region src/formulas/code_builder.ts
16906
16920
  var FunctionCodeBuilder = class {
16921
+ scope;
16907
16922
  code = "";
16908
16923
  constructor(scope = new Scope()) {
16909
16924
  this.scope = scope;
@@ -16919,6 +16934,8 @@ var FunctionCodeBuilder = class {
16919
16934
  }
16920
16935
  };
16921
16936
  var FunctionCodeImpl = class {
16937
+ scope;
16938
+ returnExpression;
16922
16939
  code;
16923
16940
  constructor(scope, code, returnExpression) {
16924
16941
  this.scope = scope;
@@ -18779,6 +18796,7 @@ function getScorecardConfiguration({ width, height }, runtime) {
18779
18796
  }, runtime).computeDesign();
18780
18797
  }
18781
18798
  var ScorecardChartConfigBuilder = class {
18799
+ runtime;
18782
18800
  context;
18783
18801
  width;
18784
18802
  height;
@@ -19897,6 +19915,9 @@ function extractFormulaIdFromToken(tokenAtCursor) {
19897
19915
  function getFirstPivotFunction(tokens) {
19898
19916
  return getFunctionsFromTokens(tokens, PIVOT_FUNCTIONS)[0];
19899
19917
  }
19918
+ function getPivotFunctions(tokens) {
19919
+ return getFunctionsFromTokens(tokens, PIVOT_FUNCTIONS);
19920
+ }
19900
19921
  /**
19901
19922
  * Parse a spreadsheet formula and detect the number of PIVOT functions that are
19902
19923
  * present in the given formula.
@@ -25562,6 +25583,7 @@ function getMaxFigureSize(getters, figureSize) {
25562
25583
  * Represent a raw XML string
25563
25584
  */
25564
25585
  var XMLString = class {
25586
+ xmlString;
25565
25587
  /**
25566
25588
  * @param xmlString should be a well formed, properly escaped XML string
25567
25589
  */
@@ -26157,6 +26179,10 @@ const FORCE_DEFAULT_ARGS_FUNCTIONS = {
26157
26179
  ROUNDDOWN: [{
26158
26180
  type: "NUMBER",
26159
26181
  value: 0
26182
+ }],
26183
+ IFERROR: [{
26184
+ type: "NUMBER",
26185
+ value: 0
26160
26186
  }]
26161
26187
  };
26162
26188
  /**
@@ -31886,6 +31912,10 @@ var Popover = class extends Component {
31886
31912
  }
31887
31913
  };
31888
31914
  var PopoverPositionContext = class {
31915
+ anchorRect;
31916
+ containerRect;
31917
+ propsMaxSize;
31918
+ spreadsheetOffset;
31889
31919
  constructor(anchorRect, containerRect, propsMaxSize, spreadsheetOffset) {
31890
31920
  this.anchorRect = anchorRect;
31891
31921
  this.containerRect = containerRect;
@@ -34672,7 +34702,7 @@ function getVisiblePivotCellPositions(getters, pivotId) {
34672
34702
  col,
34673
34703
  row
34674
34704
  };
34675
- if (pivotId === getters.getPivotIdFromPosition(position)) positions.push(position);
34705
+ if (getters.getPivotIdsFromPosition(position).includes(pivotId)) positions.push(position);
34676
34706
  }
34677
34707
  return positions;
34678
34708
  }
@@ -35335,6 +35365,7 @@ var DOMDndHelper = class {
35335
35365
  }
35336
35366
  };
35337
35367
  var ContainerWrapper = class {
35368
+ el;
35338
35369
  constructor(el) {
35339
35370
  this.el = el;
35340
35371
  }
@@ -35420,6 +35451,9 @@ var FocusStore = class {
35420
35451
  * This plugin handles this internal state.
35421
35452
  */
35422
35453
  var SelectionInputStore = class extends SpreadsheetStore {
35454
+ initialRanges;
35455
+ inputHasSingleRange;
35456
+ colors;
35423
35457
  mutators = [
35424
35458
  "resetWithRanges",
35425
35459
  "focusById",
@@ -38723,6 +38757,7 @@ var Composer = class extends Component {
38723
38757
  //#endregion
38724
38758
  //#region src/components/composer/standalone_composer/standalone_composer_store.ts
38725
38759
  var StandaloneComposerStore = class extends AbstractComposerStore {
38760
+ args;
38726
38761
  constructor(get, args) {
38727
38762
  super(get);
38728
38763
  this.args = args;
@@ -42495,6 +42530,8 @@ var MoreFormatsPanel = class extends Component {
42495
42530
  //#endregion
42496
42531
  //#region src/components/side_panel/pivot/pivot_measure_display_panel/pivot_measure_display_panel_store.ts
42497
42532
  var PivotMeasureDisplayPanelStore = class extends SpreadsheetStore {
42533
+ pivotId;
42534
+ initialMeasure;
42498
42535
  mutators = [
42499
42536
  "cancelMeasureDisplayEdition",
42500
42537
  "updateMeasureDisplayType",
@@ -43534,13 +43571,30 @@ function createMeasure(fields, measure) {
43534
43571
  } : fields[fieldName];
43535
43572
  const aggregator = measure.aggregator;
43536
43573
  return {
43574
+ /**
43575
+ * Get the id of the measure, as it is stored in the pivot formula
43576
+ */
43537
43577
  id: measure.id,
43578
+ /**
43579
+ * Display name of the measure
43580
+ * e.g. "__count" -> "Count", "amount_total" -> "Total Amount"
43581
+ */
43538
43582
  get displayName() {
43539
43583
  return measure.userDefinedName ?? field?.string ?? measure.fieldName;
43540
43584
  },
43541
43585
  userDefinedName: measure.userDefinedName,
43586
+ /**
43587
+ * Get the name of the field of the measure
43588
+ */
43542
43589
  fieldName,
43590
+ /**
43591
+ * Get the aggregator of the measure
43592
+ */
43543
43593
  aggregator,
43594
+ /**
43595
+ * Get the type of the measure field
43596
+ * e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
43597
+ */
43544
43598
  type: fieldName === "__count" ? "integer" : field?.type ?? "integer",
43545
43599
  isValid: !!(field || measure.computedBy),
43546
43600
  isHidden: measure.isHidden,
@@ -43554,10 +43608,30 @@ function createPivotDimension(fields, dimension) {
43554
43608
  const type = field?.type ?? "integer";
43555
43609
  const granularity = field && isDateOrDatetimeField(field) ? dimension.granularity : void 0;
43556
43610
  return {
43611
+ /**
43612
+ * Get the display name of the dimension
43613
+ * e.g. "stage_id" -> "Stage", "create_date:month" -> "Create Date"
43614
+ */
43557
43615
  displayName: field?.string ?? dimension.fieldName,
43616
+ /**
43617
+ * Get the name of the dimension, as it is stored in the pivot formula
43618
+ * e.g. "stage_id", "create_date:month"
43619
+ */
43558
43620
  nameWithGranularity: dimension.fieldName + (granularity ? `:${granularity}` : ""),
43621
+ /**
43622
+ * Get the name of the field of the dimension
43623
+ * e.g. "stage_id" -> "stage_id", "create_date:month" -> "create_date"
43624
+ */
43559
43625
  fieldName: dimension.fieldName,
43626
+ /**
43627
+ * Get the aggregate operator of the dimension
43628
+ * e.g. "stage_id" -> undefined, "create_date:month" -> "month"
43629
+ */
43560
43630
  granularity,
43631
+ /**
43632
+ * Get the type of the field of the dimension
43633
+ * e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
43634
+ */
43561
43635
  type,
43562
43636
  order: dimension.order,
43563
43637
  isValid: !!field
@@ -44596,6 +44670,7 @@ function adaptPivotRange(range, applyChange) {
44596
44670
  //#endregion
44597
44671
  //#region src/components/side_panel/pivot/pivot_side_panel/pivot_side_panel_store.ts
44598
44672
  var PivotSidePanelStore = class extends SpreadsheetStore {
44673
+ pivotId;
44599
44674
  mutators = [
44600
44675
  "reset",
44601
44676
  "deferUpdates",
@@ -52264,6 +52339,11 @@ var CellPlugin = class extends CorePlugin {
52264
52339
  }
52265
52340
  };
52266
52341
  var FormulaCellWithDependencies = class {
52342
+ id;
52343
+ format;
52344
+ style;
52345
+ sheetId;
52346
+ getRangeString;
52267
52347
  isFormula = true;
52268
52348
  compiledFormula;
52269
52349
  constructor(id, compiledFormula, format, style, dependencies, sheetId, getRangeString) {
@@ -52298,6 +52378,10 @@ var FormulaCellWithDependencies = class {
52298
52378
  }
52299
52379
  };
52300
52380
  var RangeReferenceToken = class {
52381
+ ranges;
52382
+ rangeIndex;
52383
+ sheetId;
52384
+ getRangeString;
52301
52385
  type = "REFERENCE";
52302
52386
  constructor(ranges, rangeIndex, sheetId, getRangeString) {
52303
52387
  this.ranges = ranges;
@@ -56109,6 +56193,8 @@ function buildCompilationParameters(context, getters, computeCell) {
56109
56193
  return new CompilationParametersBuilder(context, getters, computeCell).getParameters();
56110
56194
  }
56111
56195
  var CompilationParametersBuilder = class {
56196
+ getters;
56197
+ computeCell;
56112
56198
  evalContext;
56113
56199
  rangeCache = {};
56114
56200
  constructor(context, getters, computeCell) {
@@ -56562,6 +56648,7 @@ var ZoneRBush = class extends import_rbush_min.default {
56562
56648
  * It uses an R-Tree data structure to efficiently find dependent cells.
56563
56649
  */
56564
56650
  var FormulaDependencyGraph = class {
56651
+ createEmptyPositionSet;
56565
56652
  dependencies = new PositionMap();
56566
56653
  rTree;
56567
56654
  constructor(createEmptyPositionSet, data = []) {
@@ -56863,6 +56950,7 @@ const MAX_ITERATION = 30;
56863
56950
  const ERROR_CYCLE_CELL = Object.freeze(createEvaluatedCell(new CircularDependencyError()));
56864
56951
  const EMPTY_CELL = Object.freeze(createEvaluatedCell({ value: null }));
56865
56952
  var Evaluator = class {
56953
+ context;
56866
56954
  getters;
56867
56955
  compilationParams;
56868
56956
  evaluatedCells = new PositionMap();
@@ -58868,6 +58956,7 @@ var PivotUIPlugin = class extends CoreViewPlugin {
58868
58956
  "getPivot",
58869
58957
  "getFirstPivotFunction",
58870
58958
  "getPivotIdFromPosition",
58959
+ "getPivotIdsFromPosition",
58871
58960
  "getPivotCellFromPosition",
58872
58961
  "generateNewCalculatedMeasureName",
58873
58962
  "isPivotUnused",
@@ -58925,37 +59014,52 @@ var PivotUIPlugin = class extends CoreViewPlugin {
58925
59014
  }
58926
59015
  }
58927
59016
  /**
58928
- * Get the id of the pivot at the given position. Returns undefined if there
59017
+ * Get the id of the first pivot in the formula at the given position. Returns undefined if there
58929
59018
  * is no pivot at this position
58930
59019
  */
58931
59020
  getPivotIdFromPosition(position) {
59021
+ return this.getPivotIdsFromPosition(position)[0];
59022
+ }
59023
+ /**
59024
+ * Get all of the ids of the pivot present in the formula at the given position.
59025
+ */
59026
+ getPivotIdsFromPosition(position) {
58932
59027
  const cell = this.getters.getCorrespondingFormulaCell(position);
58933
- if (cell && cell.isFormula) {
58934
- const pivotFunction = this.getFirstPivotFunction(position.sheetId, cell.compiledFormula.tokens);
58935
- if (pivotFunction) {
58936
- const pivotId = pivotFunction.args[0]?.toString();
58937
- return pivotId && this.getters.getPivotId(pivotId);
58938
- }
58939
- }
59028
+ if (cell && cell.isFormula) return this.getPivotIdsFromFormula(position.sheetId, cell.compiledFormula);
59029
+ return [];
59030
+ }
59031
+ getPivotIdsFromFormula(sheetId, formula) {
59032
+ return this.getPivotFunctions(sheetId, formula.tokens).map((pivotFunction) => {
59033
+ const pivotId = pivotFunction.args[0]?.toString();
59034
+ return pivotId && this.getters.getPivotId(pivotId);
59035
+ }).filter(isDefined);
58940
59036
  }
58941
59037
  isSpillPivotFormula(position) {
58942
59038
  const cell = this.getters.getCorrespondingFormulaCell(position);
58943
59039
  if (cell && cell.isFormula) return this.getFirstPivotFunction(position.sheetId, cell.compiledFormula.tokens)?.functionName === "PIVOT";
58944
59040
  return false;
58945
59041
  }
58946
- getFirstPivotFunction(sheetId, tokens) {
58947
- const pivotFunction = getFirstPivotFunction(tokens);
58948
- if (!pivotFunction) return;
58949
- const { functionName, args } = pivotFunction;
58950
- return {
58951
- functionName,
58952
- args: args.map((argAst) => {
59042
+ getPivotFunctions(sheetId, tokens) {
59043
+ const pivotFunctions = getPivotFunctions(tokens);
59044
+ if (!pivotFunctions.length) return [];
59045
+ const evaluatedPivotFunctions = [];
59046
+ for (const pivotFunction of pivotFunctions) {
59047
+ const { functionName, args } = pivotFunction;
59048
+ const evaluatedArgs = args.map((argAst) => {
58953
59049
  if (argAst.type === "EMPTY") return;
58954
59050
  else if (argAst.type === "STRING" || argAst.type === "BOOLEAN" || argAst.type === "NUMBER") return argAst.value;
58955
59051
  const argsString = astToFormula(argAst);
58956
59052
  return this.getters.evaluateFormula(sheetId, argsString);
58957
- })
58958
- };
59053
+ });
59054
+ evaluatedPivotFunctions.push({
59055
+ functionName,
59056
+ args: evaluatedArgs
59057
+ });
59058
+ }
59059
+ return evaluatedPivotFunctions;
59060
+ }
59061
+ getFirstPivotFunction(sheetId, tokens) {
59062
+ return this.getPivotFunctions(sheetId, tokens)[0];
58959
59063
  }
58960
59064
  /**
58961
59065
  * Returns the domain args of a pivot formula from a position.
@@ -59049,8 +59153,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
59049
59153
  const unusedPivots = new Set(this.getters.getPivotIds());
59050
59154
  for (const sheetId of this.getters.getSheetIds()) for (const cellId in this.getters.getCells(sheetId)) {
59051
59155
  const position = this.getters.getCellPosition(cellId);
59052
- const pivotId = this.getPivotIdFromPosition(position);
59053
- if (pivotId) {
59156
+ const pivotIds = this.getPivotIdsFromPosition(position);
59157
+ for (const pivotId of pivotIds) {
59054
59158
  unusedPivots.delete(pivotId);
59055
59159
  if (!unusedPivots.size) {
59056
59160
  this.unusedPivots = [];
@@ -59058,6 +59162,21 @@ var PivotUIPlugin = class extends CoreViewPlugin {
59058
59162
  }
59059
59163
  }
59060
59164
  }
59165
+ for (const pivotId of this.getters.getPivotIds()) {
59166
+ const pivot = this.getters.getPivot(pivotId);
59167
+ for (const measure of pivot.definition.measures) if (measure.computedBy) {
59168
+ const { sheetId } = measure.computedBy;
59169
+ const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
59170
+ const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
59171
+ for (const relatedPivotId of relatedPivotIds) {
59172
+ unusedPivots.delete(relatedPivotId);
59173
+ if (!unusedPivots.size) {
59174
+ this.unusedPivots = [];
59175
+ return [];
59176
+ }
59177
+ }
59178
+ }
59179
+ }
59061
59180
  this.unusedPivots = [...unusedPivots];
59062
59181
  return this.unusedPivots;
59063
59182
  }
@@ -60311,6 +60430,8 @@ function transformPositionWithMerge(toTransform, executed) {
60311
60430
  //#endregion
60312
60431
  //#region src/collaborative/revisions.ts
60313
60432
  var Revision = class {
60433
+ rootCommand;
60434
+ timestamp;
60314
60435
  id;
60315
60436
  clientId;
60316
60437
  _commands = [];
@@ -60347,6 +60468,9 @@ var Revision = class {
60347
60468
  //#region src/collaborative/session.ts
60348
60469
  var ClientDisconnectedError = class extends Error {};
60349
60470
  var Session = class extends EventBus {
60471
+ revisions;
60472
+ transportService;
60473
+ serverRevisionId;
60350
60474
  /**
60351
60475
  * Positions of the others client.
60352
60476
  */
@@ -63920,6 +64044,9 @@ var GridSelectionPlugin = class extends UIPlugin {
63920
64044
  //#endregion
63921
64045
  //#region src/helpers/internal_viewport.ts
63922
64046
  var InternalViewport = class {
64047
+ getters;
64048
+ sheetId;
64049
+ boundaries;
63923
64050
  top;
63924
64051
  bottom;
63925
64052
  left;
@@ -67533,6 +67660,7 @@ function instantiateClipboard() {
67533
67660
  return new WebClipboardWrapper(navigator.clipboard);
67534
67661
  }
67535
67662
  var WebClipboardWrapper = class {
67663
+ clipboard;
67536
67664
  constructor(clipboard) {
67537
67665
  this.clipboard = clipboard;
67538
67666
  }
@@ -68021,6 +68149,8 @@ function inverseCommand(cmd) {
68021
68149
  * @param operations initial operations
68022
68150
  */
68023
68151
  var Branch = class Branch {
68152
+ buildTransformation;
68153
+ operations;
68024
68154
  constructor(buildTransformation, operations = []) {
68025
68155
  this.buildTransformation = buildTransformation;
68026
68156
  this.operations = operations;
@@ -68137,6 +68267,8 @@ var Branch = class Branch {
68137
68267
  * to revert it).
68138
68268
  */
68139
68269
  var Operation = class {
68270
+ id;
68271
+ data;
68140
68272
  constructor(id, data) {
68141
68273
  this.id = id;
68142
68274
  this.data = data;
@@ -68146,6 +68278,8 @@ var Operation = class {
68146
68278
  }
68147
68279
  };
68148
68280
  var LazyOperation = class LazyOperation {
68281
+ id;
68282
+ lazyData;
68149
68283
  constructor(id, lazyData) {
68150
68284
  this.id = id;
68151
68285
  this.lazyData = lazyData;
@@ -68171,6 +68305,7 @@ var LazyOperation = class LazyOperation {
68171
68305
  * ```
68172
68306
  */
68173
68307
  var OperationSequence = class OperationSequence {
68308
+ operations;
68174
68309
  constructor(operations) {
68175
68310
  this.operations = operations;
68176
68311
  }
@@ -68246,6 +68381,7 @@ var OperationSequence = class OperationSequence {
68246
68381
  *
68247
68382
  */
68248
68383
  var Tree = class {
68384
+ buildTransformation;
68249
68385
  branches;
68250
68386
  branchingOperationIds = /* @__PURE__ */ new Map();
68251
68387
  constructor(buildTransformation, initialBranch) {
@@ -68828,6 +68964,7 @@ var EventStream = class {
68828
68964
  * with the new selected anchor
68829
68965
  */
68830
68966
  var SelectionStreamProcessorImpl = class {
68967
+ getters;
68831
68968
  stream;
68832
68969
  /**
68833
68970
  * "Active" anchor used as a reference to compute new anchors
@@ -72083,6 +72220,6 @@ const chartHelpers = {
72083
72220
  //#endregion
72084
72221
  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, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
72085
72222
 
72086
- __info__.version = "18.3.47";
72087
- __info__.date = "2026-05-12T12:18:07.038Z";
72088
- __info__.hash = "8b8bc44";
72223
+ __info__.version = "18.3.49";
72224
+ __info__.date = "2026-05-27T05:57:05.809Z";
72225
+ __info__.hash = "fc34456";