@odoo/o-spreadsheet 19.1.19 → 19.1.21

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 19.1.19
6
- * @date 2026-05-12T12:20:42.167Z
7
- * @hash aea4a8c
5
+ * @version 19.1.21
6
+ * @date 2026-05-27T05:56:49.891Z
7
+ * @hash 99ebe93
8
8
  */
9
9
 
10
10
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -2037,6 +2037,7 @@ var DependencyContainer = class extends EventBus {
2037
2037
  }
2038
2038
  };
2039
2039
  var StoreFactory = class {
2040
+ get;
2040
2041
  pendingBuilds = /* @__PURE__ */ new Set();
2041
2042
  constructor(get) {
2042
2043
  this.get = get;
@@ -2081,6 +2082,7 @@ stores.inject(MyMetaStore, storeInstance);
2081
2082
  return MetaStore;
2082
2083
  }
2083
2084
  var DisposableStore = class {
2085
+ get;
2084
2086
  disposeCallbacks = [];
2085
2087
  constructor(get) {
2086
2088
  this.get = get;
@@ -2836,6 +2838,7 @@ function getAlternatingColorsPalette(quantity) {
2836
2838
  else return ALTERNATING_COLORS_XL;
2837
2839
  }
2838
2840
  var ColorGenerator = class {
2841
+ preferredColors;
2839
2842
  currentColorIndex = 0;
2840
2843
  palette;
2841
2844
  constructor(paletteSize, preferredColors = []) {
@@ -3554,6 +3557,7 @@ const _t = function(s, ...values) {
3554
3557
  return sprintf(_translate(s), ...values);
3555
3558
  };
3556
3559
  var LazyTranslatedString = class extends String {
3560
+ values;
3557
3561
  constructor(str, values) {
3558
3562
  super(str);
3559
3563
  this.values = values;
@@ -3583,6 +3587,8 @@ const CellErrorType = {
3583
3587
  };
3584
3588
  const errorTypes = new Set(Object.values(CellErrorType));
3585
3589
  var EvaluationError = class {
3590
+ message;
3591
+ value;
3586
3592
  constructor(message = _t("Error"), value = CellErrorType.GenericError) {
3587
3593
  this.message = message;
3588
3594
  this.value = value;
@@ -3615,6 +3621,7 @@ var UnknownFunctionError = class extends EvaluationError {
3615
3621
  }
3616
3622
  };
3617
3623
  var SplillBlockedError = class extends EvaluationError {
3624
+ errorOriginPosition;
3618
3625
  constructor(message = _t("Spill range is not empty"), errorOriginPosition) {
3619
3626
  super(message, CellErrorType.SpilledBlocked);
3620
3627
  this.errorOriginPosition = errorOriginPosition;
@@ -6421,8 +6428,13 @@ function getApplyRangeChangeAddColRow(cmd) {
6421
6428
  changeType: "NONE",
6422
6429
  range
6423
6430
  };
6431
+ const isUnboundedAtEnd = range.unboundedZone[end] === void 0;
6432
+ if (isUnboundedAtEnd && !range.unboundedZone.hasHeader) return {
6433
+ changeType: "RESIZE",
6434
+ range: createAdaptedRange(range, dimension, "RESIZE", cmd.quantity)
6435
+ };
6424
6436
  if (cmd.position === "after") {
6425
- if (range.zone[start] <= cmd.base && cmd.base < range.zone[end]) return {
6437
+ if (range.zone[start] <= cmd.base && (cmd.base < range.zone[end] || isUnboundedAtEnd)) return {
6426
6438
  changeType: "RESIZE",
6427
6439
  range: createAdaptedRange(range, dimension, "RESIZE", cmd.quantity)
6428
6440
  };
@@ -7351,6 +7363,10 @@ const FORCE_DEFAULT_ARGS_FUNCTIONS = {
7351
7363
  ROUNDDOWN: [{
7352
7364
  type: "NUMBER",
7353
7365
  value: 0
7366
+ }],
7367
+ IFERROR: [{
7368
+ type: "NUMBER",
7369
+ value: 0
7354
7370
  }]
7355
7371
  };
7356
7372
  /**
@@ -10066,6 +10082,7 @@ function getScorecardConfiguration({ width, height }, runtime) {
10066
10082
  }, runtime).computeDesign();
10067
10083
  }
10068
10084
  var ScorecardChartConfigBuilder = class {
10085
+ runtime;
10069
10086
  context;
10070
10087
  width;
10071
10088
  height;
@@ -16113,6 +16130,10 @@ var GaugeChartComponent = class extends _odoo_owl.Component {
16113
16130
  * Animation interpolating values using the ease-out quartic curve function (chartJS default easing)
16114
16131
  */
16115
16132
  var Animation = class {
16133
+ startValue;
16134
+ endValue;
16135
+ duration;
16136
+ callback;
16116
16137
  startTime = void 0;
16117
16138
  animationFrameId = null;
16118
16139
  constructor(startValue, endValue, duration, callback) {
@@ -16576,6 +16597,11 @@ var Popover = class extends _odoo_owl.Component {
16576
16597
  }
16577
16598
  };
16578
16599
  var PopoverPositionContext = class {
16600
+ anchorRect;
16601
+ containerRect;
16602
+ propsMaxSize;
16603
+ spreadsheetOffset;
16604
+ lastPosition;
16579
16605
  constructor(anchorRect, containerRect, propsMaxSize, spreadsheetOffset, lastPosition) {
16580
16606
  this.anchorRect = anchorRect;
16581
16607
  this.containerRect = containerRect;
@@ -28531,6 +28557,7 @@ var AbstractComposerStore = class extends SpreadsheetStore {
28531
28557
  //#endregion
28532
28558
  //#region src/components/composer/standalone_composer/standalone_composer_store.ts
28533
28559
  var StandaloneComposerStore = class extends AbstractComposerStore {
28560
+ args;
28534
28561
  constructor(get, args) {
28535
28562
  super(get);
28536
28563
  this.args = args;
@@ -29373,6 +29400,7 @@ var DOMDndHelper = class {
29373
29400
  }
29374
29401
  };
29375
29402
  var ContainerWrapper = class {
29403
+ el;
29376
29404
  constructor(el) {
29377
29405
  this.el = el;
29378
29406
  }
@@ -29444,6 +29472,10 @@ var FocusStore = class {
29444
29472
  * This plugin handles this internal state.
29445
29473
  */
29446
29474
  var SelectionInputStore = class extends SpreadsheetStore {
29475
+ initialRanges;
29476
+ inputHasSingleRange;
29477
+ colors;
29478
+ disabledRanges;
29447
29479
  mutators = [
29448
29480
  "resetWithRanges",
29449
29481
  "focusById",
@@ -31963,6 +31995,7 @@ function buildTableStyle(name, templateName, primaryColor) {
31963
31995
  * Represent a raw XML string
31964
31996
  */
31965
31997
  var XMLString = class {
31998
+ xmlString;
31966
31999
  /**
31967
32000
  * @param xmlString should be a well formed, properly escaped XML string
31968
32001
  */
@@ -38341,13 +38374,30 @@ var PivotRuntimeDefinition = class {
38341
38374
  break;
38342
38375
  }
38343
38376
  return {
38377
+ /**
38378
+ * Get the id of the measure, as it is stored in the pivot formula
38379
+ */
38344
38380
  id: measure.id,
38381
+ /**
38382
+ * Display name of the measure
38383
+ * e.g. "__count" -> "Count", "amount_total" -> "Total Amount"
38384
+ */
38345
38385
  get displayName() {
38346
38386
  return measure.userDefinedName ?? field?.string ?? measure.fieldName;
38347
38387
  },
38348
38388
  userDefinedName: measure.userDefinedName,
38389
+ /**
38390
+ * Get the name of the field of the measure
38391
+ */
38349
38392
  fieldName,
38393
+ /**
38394
+ * Get the aggregator of the measure
38395
+ */
38350
38396
  aggregator,
38397
+ /**
38398
+ * Get the type of the measure field
38399
+ * e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
38400
+ */
38351
38401
  type: fieldName === "__count" ? "integer" : field?.type ?? "integer",
38352
38402
  isValid,
38353
38403
  isHidden: measure.isHidden,
@@ -38361,10 +38411,30 @@ var PivotRuntimeDefinition = class {
38361
38411
  const type = field?.type ?? "integer";
38362
38412
  const granularity = field && isDateOrDatetimeField(field) ? dimension.granularity : void 0;
38363
38413
  return {
38414
+ /**
38415
+ * Get the display name of the dimension
38416
+ * e.g. "stage_id" -> "Stage", "create_date:month" -> "Create Date"
38417
+ */
38364
38418
  displayName: field?.string ?? dimension.fieldName,
38419
+ /**
38420
+ * Get the name of the dimension, as it is stored in the pivot formula
38421
+ * e.g. "stage_id", "create_date:month"
38422
+ */
38365
38423
  nameWithGranularity: dimension.fieldName + (granularity ? `:${granularity}` : ""),
38424
+ /**
38425
+ * Get the name of the field of the dimension
38426
+ * e.g. "stage_id" -> "stage_id", "create_date:month" -> "create_date"
38427
+ */
38366
38428
  fieldName: dimension.fieldName,
38429
+ /**
38430
+ * Get the aggregate operator of the dimension
38431
+ * e.g. "stage_id" -> undefined, "create_date:month" -> "month"
38432
+ */
38367
38433
  granularity,
38434
+ /**
38435
+ * Get the type of the field of the dimension
38436
+ * e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
38437
+ */
38368
38438
  type: field?.isCustomField ? "custom" : type,
38369
38439
  order: dimension.order,
38370
38440
  isValid: !!field,
@@ -49230,6 +49300,8 @@ var MoreFormatsPanel = class extends _odoo_owl.Component {
49230
49300
  //#endregion
49231
49301
  //#region src/components/side_panel/pivot/pivot_measure_display_panel/pivot_measure_display_panel_store.ts
49232
49302
  var PivotMeasureDisplayPanelStore = class extends SpreadsheetStore {
49303
+ pivotId;
49304
+ initialMeasure;
49233
49305
  mutators = [
49234
49306
  "cancelMeasureDisplayEdition",
49235
49307
  "updateMeasureDisplayType",
@@ -49414,7 +49486,7 @@ function getVisiblePivotCellPositions(getters, pivotId) {
49414
49486
  col,
49415
49487
  row
49416
49488
  };
49417
- if (pivotId === getters.getPivotIdFromPosition(position)) positions.push(position);
49489
+ if (getters.getPivotIdsFromPosition(position).includes(pivotId)) positions.push(position);
49418
49490
  }
49419
49491
  return positions;
49420
49492
  }
@@ -49682,6 +49754,7 @@ var PivotDimensionOrder = class extends _odoo_owl.Component {
49682
49754
  //#endregion
49683
49755
  //#region src/formulas/code_builder.ts
49684
49756
  var FunctionCodeBuilder = class {
49757
+ scope;
49685
49758
  code = "";
49686
49759
  constructor(scope = new Scope()) {
49687
49760
  this.scope = scope;
@@ -49697,6 +49770,8 @@ var FunctionCodeBuilder = class {
49697
49770
  }
49698
49771
  };
49699
49772
  var FunctionCodeImpl = class {
49773
+ scope;
49774
+ returnExpression;
49700
49775
  code;
49701
49776
  constructor(scope, code, returnExpression) {
49702
49777
  this.scope = scope;
@@ -50511,6 +50586,9 @@ const PIVOT_FUNCTIONS = [
50511
50586
  function getFirstPivotFunction(tokens) {
50512
50587
  return getFunctionsFromTokens(tokens, PIVOT_FUNCTIONS)[0];
50513
50588
  }
50589
+ function getPivotFunctions(tokens) {
50590
+ return getFunctionsFromTokens(tokens, PIVOT_FUNCTIONS);
50591
+ }
50514
50592
  /**
50515
50593
  * Parse a spreadsheet formula and detect the number of PIVOT functions that are
50516
50594
  * present in the given formula.
@@ -50587,6 +50665,8 @@ function extractFormulaIdFromToken(tokenAtCursor) {
50587
50665
  //#endregion
50588
50666
  //#region src/components/side_panel/pivot/pivot_side_panel/pivot_side_panel_store.ts
50589
50667
  var PivotSidePanelStore = class extends SpreadsheetStore {
50668
+ pivotId;
50669
+ updateMode;
50590
50670
  mutators = [
50591
50671
  "reset",
50592
50672
  "deferUpdates",
@@ -54038,6 +54118,10 @@ var CellPlugin = class extends CorePlugin {
54038
54118
  }
54039
54119
  };
54040
54120
  var FormulaCellWithDependencies = class {
54121
+ id;
54122
+ format;
54123
+ sheetId;
54124
+ getRangeString;
54041
54125
  isFormula = true;
54042
54126
  compiledFormula;
54043
54127
  constructor(id, compiledFormula, format, dependencies, sheetId, getRangeString) {
@@ -54071,6 +54155,10 @@ var FormulaCellWithDependencies = class {
54071
54155
  }
54072
54156
  };
54073
54157
  var RangeReferenceToken = class {
54158
+ ranges;
54159
+ rangeIndex;
54160
+ sheetId;
54161
+ getRangeString;
54074
54162
  type = "REFERENCE";
54075
54163
  constructor(ranges, rangeIndex, sheetId, getRangeString) {
54076
54164
  this.ranges = ranges;
@@ -57929,6 +58017,8 @@ function buildCompilationParameters(context, getters, computeCell) {
57929
58017
  return new CompilationParametersBuilder(context, getters, computeCell).getParameters();
57930
58018
  }
57931
58019
  var CompilationParametersBuilder = class {
58020
+ getters;
58021
+ computeCell;
57932
58022
  evalContext;
57933
58023
  rangeCache = {};
57934
58024
  constructor(context, getters, computeCell) {
@@ -59059,6 +59149,7 @@ const ERROR_CYCLE_CELL = Object.freeze(createEvaluatedCell({
59059
59149
  }));
59060
59150
  const EMPTY_CELL = Object.freeze(createEvaluatedCell({ value: null }));
59061
59151
  var Evaluator = class {
59152
+ context;
59062
59153
  getters;
59063
59154
  compilationParams;
59064
59155
  evaluatedCells = new PositionMap();
@@ -61330,6 +61421,7 @@ var PivotUIPlugin = class extends CoreViewPlugin {
61330
61421
  "getFirstPivotFunction",
61331
61422
  "getPivotCellSortDirection",
61332
61423
  "getPivotIdFromPosition",
61424
+ "getPivotIdsFromPosition",
61333
61425
  "getPivotCellFromPosition",
61334
61426
  "generateNewCalculatedMeasureName",
61335
61427
  "isPivotUnused",
@@ -61387,37 +61479,52 @@ var PivotUIPlugin = class extends CoreViewPlugin {
61387
61479
  }
61388
61480
  }
61389
61481
  /**
61390
- * Get the id of the pivot at the given position. Returns undefined if there
61482
+ * Get the id of the first pivot in the formula at the given position. Returns undefined if there
61391
61483
  * is no pivot at this position
61392
61484
  */
61393
61485
  getPivotIdFromPosition(position) {
61486
+ return this.getPivotIdsFromPosition(position)[0];
61487
+ }
61488
+ /**
61489
+ * Get all of the ids of the pivot present in the formula at the given position.
61490
+ */
61491
+ getPivotIdsFromPosition(position) {
61394
61492
  const cell = this.getters.getCorrespondingFormulaCell(position);
61395
- if (cell && cell.isFormula) {
61396
- const pivotFunction = this.getFirstPivotFunction(position.sheetId, cell.compiledFormula.tokens);
61397
- if (pivotFunction) {
61398
- const pivotId = pivotFunction.args[0]?.toString();
61399
- return pivotId && this.getters.getPivotId(pivotId);
61400
- }
61401
- }
61493
+ if (cell && cell.isFormula) return this.getPivotIdsFromFormula(position.sheetId, cell.compiledFormula);
61494
+ return [];
61495
+ }
61496
+ getPivotIdsFromFormula(sheetId, formula) {
61497
+ return this.getPivotFunctions(sheetId, formula.tokens).map((pivotFunction) => {
61498
+ const pivotId = pivotFunction.args[0]?.toString();
61499
+ return pivotId && this.getters.getPivotId(pivotId);
61500
+ }).filter(isDefined);
61402
61501
  }
61403
61502
  isSpillPivotFormula(position) {
61404
61503
  const cell = this.getters.getCorrespondingFormulaCell(position);
61405
61504
  if (cell && cell.isFormula) return this.getFirstPivotFunction(position.sheetId, cell.compiledFormula.tokens)?.functionName === "PIVOT";
61406
61505
  return false;
61407
61506
  }
61408
- getFirstPivotFunction(sheetId, tokens) {
61409
- const pivotFunction = getFirstPivotFunction(tokens);
61410
- if (!pivotFunction) return;
61411
- const { functionName, args } = pivotFunction;
61412
- return {
61413
- functionName,
61414
- args: args.map((argAst) => {
61507
+ getPivotFunctions(sheetId, tokens) {
61508
+ const pivotFunctions = getPivotFunctions(tokens);
61509
+ if (!pivotFunctions.length) return [];
61510
+ const evaluatedPivotFunctions = [];
61511
+ for (const pivotFunction of pivotFunctions) {
61512
+ const { functionName, args } = pivotFunction;
61513
+ const evaluatedArgs = args.map((argAst) => {
61415
61514
  if (argAst.type === "EMPTY") return;
61416
61515
  else if (argAst.type === "STRING" || argAst.type === "BOOLEAN" || argAst.type === "NUMBER") return argAst.value;
61417
61516
  const argsString = astToFormula(argAst);
61418
61517
  return this.getters.evaluateFormula(sheetId, argsString);
61419
- })
61420
- };
61518
+ });
61519
+ evaluatedPivotFunctions.push({
61520
+ functionName,
61521
+ args: evaluatedArgs
61522
+ });
61523
+ }
61524
+ return evaluatedPivotFunctions;
61525
+ }
61526
+ getFirstPivotFunction(sheetId, tokens) {
61527
+ return this.getPivotFunctions(sheetId, tokens)[0];
61421
61528
  }
61422
61529
  /**
61423
61530
  * Returns the domain args of a pivot formula from a position.
@@ -61523,8 +61630,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
61523
61630
  const unusedPivots = new Set(this.getters.getPivotIds());
61524
61631
  for (const sheetId of this.getters.getSheetIds()) for (const cellId in this.getters.getCells(sheetId)) {
61525
61632
  const position = this.getters.getCellPosition(cellId);
61526
- const pivotId = this.getPivotIdFromPosition(position);
61527
- if (pivotId) {
61633
+ const pivotIds = this.getPivotIdsFromPosition(position);
61634
+ for (const pivotId of pivotIds) {
61528
61635
  unusedPivots.delete(pivotId);
61529
61636
  if (!unusedPivots.size) {
61530
61637
  this.unusedPivotsInFormulas = [];
@@ -61532,6 +61639,21 @@ var PivotUIPlugin = class extends CoreViewPlugin {
61532
61639
  }
61533
61640
  }
61534
61641
  }
61642
+ for (const pivotId of this.getters.getPivotIds()) {
61643
+ const pivot = this.getters.getPivot(pivotId);
61644
+ for (const measure of pivot.definition.measures) if (measure.computedBy) {
61645
+ const { sheetId } = measure.computedBy;
61646
+ const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
61647
+ const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
61648
+ for (const relatedPivotId of relatedPivotIds) {
61649
+ unusedPivots.delete(relatedPivotId);
61650
+ if (!unusedPivots.size) {
61651
+ this.unusedPivotsInFormulas = [];
61652
+ return [];
61653
+ }
61654
+ }
61655
+ }
61656
+ }
61535
61657
  this.unusedPivotsInFormulas = [...unusedPivots];
61536
61658
  return this.unusedPivotsInFormulas;
61537
61659
  }
@@ -61540,6 +61662,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
61540
61662
  //#endregion
61541
61663
  //#region src/clipboard_handlers/abstract_clipboard_handler.ts
61542
61664
  var ClipboardHandler = class {
61665
+ getters;
61666
+ dispatch;
61543
61667
  constructor(getters, dispatch) {
61544
61668
  this.getters = getters;
61545
61669
  this.dispatch = dispatch;
@@ -63809,6 +63933,8 @@ function transformPositionWithMerge(toTransform, executed) {
63809
63933
  //#endregion
63810
63934
  //#region src/collaborative/revisions.ts
63811
63935
  var Revision = class {
63936
+ rootCommand;
63937
+ timestamp;
63812
63938
  id;
63813
63939
  clientId;
63814
63940
  _commands = [];
@@ -63845,6 +63971,9 @@ var Revision = class {
63845
63971
  //#region src/collaborative/session.ts
63846
63972
  var ClientDisconnectedError = class extends Error {};
63847
63973
  var Session = class extends EventBus {
63974
+ revisions;
63975
+ transportService;
63976
+ serverRevisionId;
63848
63977
  /**
63849
63978
  * Positions of the others client.
63850
63979
  */
@@ -67346,6 +67475,9 @@ var GridSelectionPlugin = class extends UIPlugin {
67346
67475
  //#endregion
67347
67476
  //#region src/helpers/internal_viewport.ts
67348
67477
  var InternalViewport = class {
67478
+ getters;
67479
+ sheetId;
67480
+ boundaries;
67349
67481
  top;
67350
67482
  bottom;
67351
67483
  left;
@@ -72063,6 +72195,7 @@ function instantiateClipboard() {
72063
72195
  return new WebClipboardWrapper(navigator.clipboard);
72064
72196
  }
72065
72197
  var WebClipboardWrapper = class {
72198
+ clipboard;
72066
72199
  constructor(clipboard) {
72067
72200
  this.clipboard = clipboard;
72068
72201
  }
@@ -72326,6 +72459,7 @@ var Spreadsheet = class extends _odoo_owl.Component {
72326
72459
  //#endregion
72327
72460
  //#region src/collaborative/readonly_transport_filter.ts
72328
72461
  var ReadonlyTransportFilter = class {
72462
+ transportService;
72329
72463
  constructor(transportService) {
72330
72464
  this.transportService = transportService;
72331
72465
  }
@@ -72357,6 +72491,8 @@ function inverseCommand(cmd) {
72357
72491
  * @param operations initial operations
72358
72492
  */
72359
72493
  var Branch = class Branch {
72494
+ buildTransformation;
72495
+ operations;
72360
72496
  constructor(buildTransformation, operations = []) {
72361
72497
  this.buildTransformation = buildTransformation;
72362
72498
  this.operations = operations;
@@ -72473,6 +72609,8 @@ var Branch = class Branch {
72473
72609
  * to revert it).
72474
72610
  */
72475
72611
  var Operation = class {
72612
+ id;
72613
+ data;
72476
72614
  constructor(id, data) {
72477
72615
  this.id = id;
72478
72616
  this.data = data;
@@ -72482,6 +72620,8 @@ var Operation = class {
72482
72620
  }
72483
72621
  };
72484
72622
  var LazyOperation = class LazyOperation {
72623
+ id;
72624
+ lazyData;
72485
72625
  constructor(id, lazyData) {
72486
72626
  this.id = id;
72487
72627
  this.lazyData = lazyData;
@@ -72507,6 +72647,7 @@ var LazyOperation = class LazyOperation {
72507
72647
  * ```
72508
72648
  */
72509
72649
  var OperationSequence = class OperationSequence {
72650
+ operations;
72510
72651
  constructor(operations) {
72511
72652
  this.operations = operations;
72512
72653
  }
@@ -72582,6 +72723,7 @@ var OperationSequence = class OperationSequence {
72582
72723
  *
72583
72724
  */
72584
72725
  var Tree = class {
72726
+ buildTransformation;
72585
72727
  branches;
72586
72728
  branchingOperationIds = /* @__PURE__ */ new Map();
72587
72729
  constructor(buildTransformation, initialBranch) {
@@ -73394,6 +73536,7 @@ var EventStream = class {
73394
73536
  * with the new selected anchor
73395
73537
  */
73396
73538
  var SelectionStreamProcessorImpl = class {
73539
+ getters;
73397
73540
  stream;
73398
73541
  /**
73399
73542
  * "Active" anchor used as a reference to compute new anchors
@@ -79184,6 +79327,6 @@ exports.stores = stores;
79184
79327
  exports.tokenColors = tokenColors;
79185
79328
  exports.tokenize = tokenize;
79186
79329
 
79187
- __info__.version = "19.1.19";
79188
- __info__.date = "2026-05-12T12:20:42.167Z";
79189
- __info__.hash = "aea4a8c";
79330
+ __info__.version = "19.1.21";
79331
+ __info__.date = "2026-05-27T05:56:49.891Z";
79332
+ __info__.hash = "99ebe93";
@@ -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 19.1.19
6
- * @date 2026-05-12T12:20:43.807Z
7
- * @hash aea4a8c
5
+ * @version 19.1.21
6
+ * @date 2026-05-27T05:56:51.558Z
7
+ * @hash 99ebe93
8
8
  */
9
9
  :root {
10
10
  --os-gray-100: light-dark(#f9fafb, #1b1d26);