@odoo/o-spreadsheet 19.2.12 → 19.2.14

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.2.12
6
- * @date 2026-05-12T12:20:55.681Z
7
- * @hash 5282e3c
5
+ * @version 19.2.14
6
+ * @date 2026-05-27T05:57:14.898Z
7
+ * @hash 96730cd
8
8
  */
9
9
 
10
10
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -2062,6 +2062,7 @@ var DependencyContainer = class extends EventBus {
2062
2062
  }
2063
2063
  };
2064
2064
  var StoreFactory = class {
2065
+ get;
2065
2066
  pendingBuilds = /* @__PURE__ */ new Set();
2066
2067
  constructor(get) {
2067
2068
  this.get = get;
@@ -2106,6 +2107,7 @@ stores.inject(MyMetaStore, storeInstance);
2106
2107
  return MetaStore;
2107
2108
  }
2108
2109
  var DisposableStore = class {
2110
+ get;
2109
2111
  disposeCallbacks = [];
2110
2112
  constructor(get) {
2111
2113
  this.get = get;
@@ -2861,6 +2863,7 @@ function getAlternatingColorsPalette(quantity) {
2861
2863
  else return ALTERNATING_COLORS_XL;
2862
2864
  }
2863
2865
  var ColorGenerator = class {
2866
+ preferredColors;
2864
2867
  currentColorIndex = 0;
2865
2868
  palette;
2866
2869
  constructor(paletteSize, preferredColors = []) {
@@ -3579,6 +3582,7 @@ const _t = function(s, ...values) {
3579
3582
  return sprintf(_translate(s), ...values);
3580
3583
  };
3581
3584
  var LazyTranslatedString = class extends String {
3585
+ values;
3582
3586
  constructor(str, values) {
3583
3587
  super(str);
3584
3588
  this.values = values;
@@ -3608,6 +3612,8 @@ const CellErrorType = {
3608
3612
  };
3609
3613
  const errorTypes = new Set(Object.values(CellErrorType));
3610
3614
  var EvaluationError = class {
3615
+ message;
3616
+ value;
3611
3617
  constructor(message = _t("Error"), value = CellErrorType.GenericError) {
3612
3618
  this.message = message;
3613
3619
  this.value = value;
@@ -3640,6 +3646,7 @@ var UnknownFunctionError = class extends EvaluationError {
3640
3646
  }
3641
3647
  };
3642
3648
  var SplillBlockedError = class extends EvaluationError {
3649
+ errorOriginPosition;
3643
3650
  constructor(message = _t("Spill range is not empty"), errorOriginPosition) {
3644
3651
  super(message, CellErrorType.SpilledBlocked);
3645
3652
  this.errorOriginPosition = errorOriginPosition;
@@ -6477,8 +6484,13 @@ function getApplyRangeChangeAddColRow(cmd) {
6477
6484
  changeType: "NONE",
6478
6485
  range
6479
6486
  };
6487
+ const isUnboundedAtEnd = range.unboundedZone[end] === void 0;
6488
+ if (isUnboundedAtEnd && !range.unboundedZone.hasHeader) return {
6489
+ changeType: "RESIZE",
6490
+ range: createAdaptedRange(range, dimension, "RESIZE", cmd.quantity)
6491
+ };
6480
6492
  if (cmd.position === "after") {
6481
- if (range.zone[start] <= cmd.base && cmd.base < range.zone[end]) return {
6493
+ if (range.zone[start] <= cmd.base && (cmd.base < range.zone[end] || isUnboundedAtEnd)) return {
6482
6494
  changeType: "RESIZE",
6483
6495
  range: createAdaptedRange(range, dimension, "RESIZE", cmd.quantity)
6484
6496
  };
@@ -7422,6 +7434,10 @@ const FORCE_DEFAULT_ARGS_FUNCTIONS = {
7422
7434
  ROUNDDOWN: [{
7423
7435
  type: "NUMBER",
7424
7436
  value: 0
7437
+ }],
7438
+ IFERROR: [{
7439
+ type: "NUMBER",
7440
+ value: 0
7425
7441
  }]
7426
7442
  };
7427
7443
  /**
@@ -10135,6 +10151,7 @@ function getScorecardConfiguration({ width, height }, runtime) {
10135
10151
  }, runtime).computeDesign();
10136
10152
  }
10137
10153
  var ScorecardChartConfigBuilder = class {
10154
+ runtime;
10138
10155
  context;
10139
10156
  width;
10140
10157
  height;
@@ -16214,6 +16231,10 @@ var GaugeChartComponent = class extends _odoo_owl.Component {
16214
16231
  * Animation interpolating values using the ease-out quartic curve function (chartJS default easing)
16215
16232
  */
16216
16233
  var Animation = class {
16234
+ startValue;
16235
+ endValue;
16236
+ duration;
16237
+ callback;
16217
16238
  startTime = void 0;
16218
16239
  animationFrameId = null;
16219
16240
  constructor(startValue, endValue, duration, callback) {
@@ -16680,6 +16701,11 @@ var Popover = class extends _odoo_owl.Component {
16680
16701
  }
16681
16702
  };
16682
16703
  var PopoverPositionContext = class {
16704
+ anchorRect;
16705
+ containerRect;
16706
+ propsMaxSize;
16707
+ spreadsheetOffset;
16708
+ lastPosition;
16683
16709
  constructor(anchorRect, containerRect, propsMaxSize, spreadsheetOffset, lastPosition) {
16684
16710
  this.anchorRect = anchorRect;
16685
16711
  this.containerRect = containerRect;
@@ -25784,6 +25810,7 @@ for (const category of categories) {
25784
25810
  * Represent a raw XML string
25785
25811
  */
25786
25812
  var XMLString = class {
25813
+ xmlString;
25787
25814
  /**
25788
25815
  * @param xmlString should be a well formed, properly escaped XML string
25789
25816
  */
@@ -34022,6 +34049,7 @@ var AbstractComposerStore = class extends SpreadsheetStore {
34022
34049
  //#endregion
34023
34050
  //#region src/components/composer/standalone_composer/standalone_composer_store.ts
34024
34051
  var StandaloneComposerStore = class extends AbstractComposerStore {
34052
+ args;
34025
34053
  constructor(get, args) {
34026
34054
  super(get);
34027
34055
  this.args = args;
@@ -34925,6 +34953,7 @@ var DOMDndHelper = class {
34925
34953
  }
34926
34954
  };
34927
34955
  var ContainerWrapper = class {
34956
+ el;
34928
34957
  constructor(el) {
34929
34958
  this.el = el;
34930
34959
  }
@@ -34996,6 +35025,10 @@ var FocusStore = class {
34996
35025
  * This plugin handles this internal state.
34997
35026
  */
34998
35027
  var SelectionInputStore = class extends SpreadsheetStore {
35028
+ initialRanges;
35029
+ inputHasSingleRange;
35030
+ colors;
35031
+ disabledRanges;
34999
35032
  mutators = [
35000
35033
  "resetWithRanges",
35001
35034
  "focusById",
@@ -43089,6 +43122,8 @@ var MoreFormatsPanel = class extends _odoo_owl.Component {
43089
43122
  //#endregion
43090
43123
  //#region src/components/side_panel/pivot/pivot_measure_display_panel/pivot_measure_display_panel_store.ts
43091
43124
  var PivotMeasureDisplayPanelStore = class extends SpreadsheetStore {
43125
+ pivotId;
43126
+ initialMeasure;
43092
43127
  mutators = [
43093
43128
  "cancelMeasureDisplayEdition",
43094
43129
  "updateMeasureDisplayType",
@@ -43280,7 +43315,7 @@ function getVisiblePivotCellPositions(getters, pivotId) {
43280
43315
  col,
43281
43316
  row
43282
43317
  };
43283
- if (pivotId === getters.getPivotIdFromPosition(position)) positions.push(position);
43318
+ if (getters.getPivotIdsFromPosition(position).includes(pivotId)) positions.push(position);
43284
43319
  }
43285
43320
  return positions;
43286
43321
  }
@@ -43571,6 +43606,7 @@ var PivotDimensionOrder = class extends _odoo_owl.Component {
43571
43606
  //#endregion
43572
43607
  //#region src/formulas/code_builder.ts
43573
43608
  var FunctionCodeBuilder = class {
43609
+ scope;
43574
43610
  code = "";
43575
43611
  constructor(scope = new Scope()) {
43576
43612
  this.scope = scope;
@@ -43586,6 +43622,8 @@ var FunctionCodeBuilder = class {
43586
43622
  }
43587
43623
  };
43588
43624
  var FunctionCodeImpl = class {
43625
+ scope;
43626
+ returnExpression;
43589
43627
  code;
43590
43628
  constructor(scope, code, returnExpression) {
43591
43629
  this.scope = scope;
@@ -43668,6 +43706,13 @@ const collator = new Intl.Collator("en", { sensitivity: "accent" });
43668
43706
  * without recompiling it (for example when the formula is copied to another cell, or when we want to replace literal values but keep the same structure).
43669
43707
  * */
43670
43708
  var CompiledFormula = class CompiledFormula {
43709
+ sheetId;
43710
+ tokens;
43711
+ literalValues;
43712
+ symbols;
43713
+ isBadExpression;
43714
+ normalizedFormula;
43715
+ execute;
43671
43716
  rangeDependencies;
43672
43717
  hasDependencies;
43673
43718
  constructor(sheetId, tokens, literalValues, symbols, dependencies, isBadExpression, normalizedFormula, execute) {
@@ -44552,13 +44597,30 @@ var PivotRuntimeDefinition = class {
44552
44597
  break;
44553
44598
  }
44554
44599
  return {
44600
+ /**
44601
+ * Get the id of the measure, as it is stored in the pivot formula
44602
+ */
44555
44603
  id: measure.id,
44604
+ /**
44605
+ * Display name of the measure
44606
+ * e.g. "__count" -> "Count", "amount_total" -> "Total Amount"
44607
+ */
44556
44608
  get displayName() {
44557
44609
  return measure.userDefinedName ?? field?.string ?? measure.fieldName;
44558
44610
  },
44559
44611
  userDefinedName: measure.userDefinedName,
44612
+ /**
44613
+ * Get the name of the field of the measure
44614
+ */
44560
44615
  fieldName,
44616
+ /**
44617
+ * Get the aggregator of the measure
44618
+ */
44561
44619
  aggregator,
44620
+ /**
44621
+ * Get the type of the measure field
44622
+ * e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
44623
+ */
44562
44624
  type: fieldName === "__count" ? "integer" : field?.type ?? "integer",
44563
44625
  isValid,
44564
44626
  isHidden: measure.isHidden,
@@ -44572,10 +44634,30 @@ var PivotRuntimeDefinition = class {
44572
44634
  const type = field?.type ?? "integer";
44573
44635
  const granularity = field && isDateOrDatetimeField(field) ? dimension.granularity : void 0;
44574
44636
  return {
44637
+ /**
44638
+ * Get the display name of the dimension
44639
+ * e.g. "stage_id" -> "Stage", "create_date:month" -> "Create Date"
44640
+ */
44575
44641
  displayName: field?.string ?? dimension.fieldName,
44642
+ /**
44643
+ * Get the name of the dimension, as it is stored in the pivot formula
44644
+ * e.g. "stage_id", "create_date:month"
44645
+ */
44576
44646
  nameWithGranularity: dimension.fieldName + (granularity ? `:${granularity}` : ""),
44647
+ /**
44648
+ * Get the name of the field of the dimension
44649
+ * e.g. "stage_id" -> "stage_id", "create_date:month" -> "create_date"
44650
+ */
44577
44651
  fieldName: dimension.fieldName,
44652
+ /**
44653
+ * Get the aggregate operator of the dimension
44654
+ * e.g. "stage_id" -> undefined, "create_date:month" -> "month"
44655
+ */
44578
44656
  granularity,
44657
+ /**
44658
+ * Get the type of the field of the dimension
44659
+ * e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
44660
+ */
44579
44661
  type: field?.isCustomField ? "custom" : type,
44580
44662
  order: dimension.order,
44581
44663
  isValid: !!field,
@@ -45721,6 +45803,9 @@ const PIVOT_FUNCTIONS = [
45721
45803
  function getFirstPivotFunction(compiledFormula, getters) {
45722
45804
  return compiledFormula.getFunctionsFromTokens(PIVOT_FUNCTIONS, getters)[0];
45723
45805
  }
45806
+ function getPivotFunctions(compiledFormula, getters) {
45807
+ return compiledFormula.getFunctionsFromTokens(PIVOT_FUNCTIONS, getters);
45808
+ }
45724
45809
  /**
45725
45810
  * Parse a spreadsheet formula and detect the number of PIVOT functions that are
45726
45811
  * present in the given formula.
@@ -45797,6 +45882,8 @@ function extractFormulaIdFromToken(tokenAtCursor) {
45797
45882
  //#endregion
45798
45883
  //#region src/components/side_panel/pivot/pivot_side_panel/pivot_side_panel_store.ts
45799
45884
  var PivotSidePanelStore = class extends SpreadsheetStore {
45885
+ pivotId;
45886
+ updateMode;
45800
45887
  mutators = [
45801
45888
  "reset",
45802
45889
  "deferUpdates",
@@ -60108,6 +60195,8 @@ function buildCompilationParameters(context, getters, computeCell) {
60108
60195
  return new CompilationParametersBuilder(context, getters, computeCell).getParameters();
60109
60196
  }
60110
60197
  var CompilationParametersBuilder = class {
60198
+ getters;
60199
+ computeCell;
60111
60200
  evalContext;
60112
60201
  rangeCache = {};
60113
60202
  constructor(context, getters, computeCell) {
@@ -61238,6 +61327,7 @@ const ERROR_CYCLE_CELL = Object.freeze(createEvaluatedCell({
61238
61327
  }));
61239
61328
  const EMPTY_CELL = Object.freeze(createEvaluatedCell({ value: null }));
61240
61329
  var Evaluator = class {
61330
+ context;
61241
61331
  getters;
61242
61332
  compilationParams;
61243
61333
  evaluatedCells = new PositionMap();
@@ -63628,6 +63718,7 @@ var PivotUIPlugin = class extends CoreViewPlugin {
63628
63718
  "getFirstPivotFunction",
63629
63719
  "getPivotCellSortDirection",
63630
63720
  "getPivotIdFromPosition",
63721
+ "getPivotIdsFromPosition",
63631
63722
  "getPivotCellFromPosition",
63632
63723
  "generateNewCalculatedMeasureName",
63633
63724
  "isPivotUnused",
@@ -63687,37 +63778,52 @@ var PivotUIPlugin = class extends CoreViewPlugin {
63687
63778
  }
63688
63779
  }
63689
63780
  /**
63690
- * Get the id of the pivot at the given position. Returns undefined if there
63781
+ * Get the id of the first pivot in the formula at the given position. Returns undefined if there
63691
63782
  * is no pivot at this position
63692
63783
  */
63693
63784
  getPivotIdFromPosition(position) {
63785
+ return this.getPivotIdsFromPosition(position)[0];
63786
+ }
63787
+ /**
63788
+ * Get all of the ids of the pivot present in the formula at the given position.
63789
+ */
63790
+ getPivotIdsFromPosition(position) {
63694
63791
  const cell = this.getters.getCorrespondingFormulaCell(position);
63695
- if (cell && cell.isFormula) {
63696
- const pivotFunction = this.getFirstPivotFunction(position.sheetId, cell.compiledFormula);
63697
- if (pivotFunction) {
63698
- const pivotId = pivotFunction.args[0]?.toString();
63699
- return pivotId && this.getters.getPivotId(pivotId);
63700
- }
63701
- }
63792
+ if (cell && cell.isFormula) return this.getPivotIdsFromFormula(position.sheetId, cell.compiledFormula);
63793
+ return [];
63794
+ }
63795
+ getPivotIdsFromFormula(sheetId, formula) {
63796
+ return this.getPivotFunctions(sheetId, formula).map((pivotFunction) => {
63797
+ const pivotId = pivotFunction.args[0]?.toString();
63798
+ return pivotId && this.getters.getPivotId(pivotId);
63799
+ }).filter(isDefined);
63702
63800
  }
63703
63801
  isSpillPivotFormula(position) {
63704
63802
  const cell = this.getters.getCorrespondingFormulaCell(position);
63705
63803
  if (cell && cell.isFormula) return this.getFirstPivotFunction(position.sheetId, cell.compiledFormula)?.functionName === "PIVOT";
63706
63804
  return false;
63707
63805
  }
63708
- getFirstPivotFunction(sheetId, compiledFormula) {
63709
- const pivotFunction = getFirstPivotFunction(compiledFormula, this.getters);
63710
- if (!pivotFunction) return;
63711
- const { functionName, args } = pivotFunction;
63712
- return {
63713
- functionName,
63714
- args: args.map((argAst) => {
63806
+ getPivotFunctions(sheetId, formula) {
63807
+ const pivotFunctions = getPivotFunctions(formula, this.getters);
63808
+ if (!pivotFunctions.length) return [];
63809
+ const evaluatedPivotFunctions = [];
63810
+ for (const pivotFunction of pivotFunctions) {
63811
+ const { functionName, args } = pivotFunction;
63812
+ const evaluatedArgs = args.map((argAst) => {
63715
63813
  if (argAst.type === "EMPTY") return;
63716
63814
  else if (argAst.type === "STRING" || argAst.type === "BOOLEAN" || argAst.type === "NUMBER") return argAst.value;
63717
63815
  const argsString = astToFormula(argAst);
63718
63816
  return this.getters.evaluateFormula(sheetId, argsString);
63719
- })
63720
- };
63817
+ });
63818
+ evaluatedPivotFunctions.push({
63819
+ functionName,
63820
+ args: evaluatedArgs
63821
+ });
63822
+ }
63823
+ return evaluatedPivotFunctions;
63824
+ }
63825
+ getFirstPivotFunction(sheetId, formula) {
63826
+ return this.getPivotFunctions(sheetId, formula)[0];
63721
63827
  }
63722
63828
  /**
63723
63829
  * Returns the domain args of a pivot formula from a position.
@@ -63823,8 +63929,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
63823
63929
  const unusedPivots = new Set(this.getters.getPivotIds());
63824
63930
  for (const sheetId of this.getters.getSheetIds()) for (const cell of this.getters.getCells(sheetId)) {
63825
63931
  const position = this.getters.getCellPosition(cell.id);
63826
- const pivotId = this.getPivotIdFromPosition(position);
63827
- if (pivotId) {
63932
+ const pivotIds = this.getPivotIdsFromPosition(position);
63933
+ for (const pivotId of pivotIds) {
63828
63934
  unusedPivots.delete(pivotId);
63829
63935
  if (!unusedPivots.size) {
63830
63936
  this.unusedPivotsInFormulas = [];
@@ -63832,6 +63938,21 @@ var PivotUIPlugin = class extends CoreViewPlugin {
63832
63938
  }
63833
63939
  }
63834
63940
  }
63941
+ for (const pivotId of this.getters.getPivotIds()) {
63942
+ const pivot = this.getters.getPivot(pivotId);
63943
+ for (const measure of pivot.definition.measures) if (measure.computedBy) {
63944
+ const { sheetId } = measure.computedBy;
63945
+ const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
63946
+ const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
63947
+ for (const relatedPivotId of relatedPivotIds) {
63948
+ unusedPivots.delete(relatedPivotId);
63949
+ if (!unusedPivots.size) {
63950
+ this.unusedPivotsInFormulas = [];
63951
+ return [];
63952
+ }
63953
+ }
63954
+ }
63955
+ }
63835
63956
  this.unusedPivotsInFormulas = [...unusedPivots];
63836
63957
  return this.unusedPivotsInFormulas;
63837
63958
  }
@@ -63870,6 +63991,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
63870
63991
  //#endregion
63871
63992
  //#region src/clipboard_handlers/abstract_clipboard_handler.ts
63872
63993
  var ClipboardHandler = class {
63994
+ getters;
63995
+ dispatch;
63873
63996
  constructor(getters, dispatch) {
63874
63997
  this.getters = getters;
63875
63998
  this.dispatch = dispatch;
@@ -66164,6 +66287,8 @@ function transformPositionWithMerge(toTransform, executed) {
66164
66287
  //#endregion
66165
66288
  //#region src/collaborative/revisions.ts
66166
66289
  var Revision = class {
66290
+ rootCommand;
66291
+ timestamp;
66167
66292
  id;
66168
66293
  clientId;
66169
66294
  _commands = [];
@@ -66200,6 +66325,9 @@ var Revision = class {
66200
66325
  //#region src/collaborative/session.ts
66201
66326
  var ClientDisconnectedError = class extends Error {};
66202
66327
  var Session = class extends EventBus {
66328
+ revisions;
66329
+ transportService;
66330
+ serverRevisionId;
66203
66331
  /**
66204
66332
  * Positions of the others client.
66205
66333
  */
@@ -69779,6 +69907,9 @@ var GridSelectionPlugin = class extends UIPlugin {
69779
69907
  //#endregion
69780
69908
  //#region src/helpers/internal_viewport.ts
69781
69909
  var InternalViewport = class {
69910
+ getters;
69911
+ sheetId;
69912
+ boundaries;
69782
69913
  top;
69783
69914
  bottom;
69784
69915
  left;
@@ -74589,6 +74720,7 @@ function instantiateClipboard() {
74589
74720
  return new WebClipboardWrapper(navigator.clipboard);
74590
74721
  }
74591
74722
  var WebClipboardWrapper = class {
74723
+ clipboard;
74592
74724
  constructor(clipboard) {
74593
74725
  this.clipboard = clipboard;
74594
74726
  }
@@ -74860,6 +74992,7 @@ var Spreadsheet = class extends _odoo_owl.Component {
74860
74992
  //#endregion
74861
74993
  //#region src/collaborative/readonly_transport_filter.ts
74862
74994
  var ReadonlyTransportFilter = class {
74995
+ transportService;
74863
74996
  constructor(transportService) {
74864
74997
  this.transportService = transportService;
74865
74998
  }
@@ -74891,6 +75024,8 @@ function inverseCommand(cmd) {
74891
75024
  * @param operations initial operations
74892
75025
  */
74893
75026
  var Branch = class Branch {
75027
+ buildTransformation;
75028
+ operations;
74894
75029
  constructor(buildTransformation, operations = []) {
74895
75030
  this.buildTransformation = buildTransformation;
74896
75031
  this.operations = operations;
@@ -75007,6 +75142,8 @@ var Branch = class Branch {
75007
75142
  * to revert it).
75008
75143
  */
75009
75144
  var Operation = class {
75145
+ id;
75146
+ data;
75010
75147
  constructor(id, data) {
75011
75148
  this.id = id;
75012
75149
  this.data = data;
@@ -75016,6 +75153,8 @@ var Operation = class {
75016
75153
  }
75017
75154
  };
75018
75155
  var LazyOperation = class LazyOperation {
75156
+ id;
75157
+ lazyData;
75019
75158
  constructor(id, lazyData) {
75020
75159
  this.id = id;
75021
75160
  this.lazyData = lazyData;
@@ -75041,6 +75180,7 @@ var LazyOperation = class LazyOperation {
75041
75180
  * ```
75042
75181
  */
75043
75182
  var OperationSequence = class OperationSequence {
75183
+ operations;
75044
75184
  constructor(operations) {
75045
75185
  this.operations = operations;
75046
75186
  }
@@ -75116,6 +75256,7 @@ var OperationSequence = class OperationSequence {
75116
75256
  *
75117
75257
  */
75118
75258
  var Tree = class {
75259
+ buildTransformation;
75119
75260
  branches;
75120
75261
  branchingOperationIds = /* @__PURE__ */ new Map();
75121
75262
  constructor(buildTransformation, initialBranch) {
@@ -75930,6 +76071,7 @@ var EventStream = class {
75930
76071
  * with the new selected anchor
75931
76072
  */
75932
76073
  var SelectionStreamProcessorImpl = class {
76074
+ getters;
75933
76075
  stream;
75934
76076
  /**
75935
76077
  * "Active" anchor used as a reference to compute new anchors
@@ -81747,6 +81889,6 @@ exports.stores = stores;
81747
81889
  exports.tokenColors = tokenColors;
81748
81890
  exports.tokenize = tokenize;
81749
81891
 
81750
- __info__.version = "19.2.12";
81751
- __info__.date = "2026-05-12T12:20:55.681Z";
81752
- __info__.hash = "5282e3c";
81892
+ __info__.version = "19.2.14";
81893
+ __info__.date = "2026-05-27T05:57:14.898Z";
81894
+ __info__.hash = "96730cd";
@@ -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.2.12
6
- * @date 2026-05-12T12:20:57.447Z
7
- * @hash 5282e3c
5
+ * @version 19.2.14
6
+ * @date 2026-05-27T05:57:16.585Z
7
+ * @hash 96730cd
8
8
  */
9
9
  :root {
10
10
  --os-gray-100: light-dark(#f9fafb, #1b1d26);