@odoo/o-spreadsheet 19.1.33 → 19.1.34

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.33
6
- * @date 2026-08-29T09:14:50.804Z
7
- * @hash 5c5b7a2
5
+ * @version 19.1.34
6
+ * @date 2026-09-04T07:25:45.601Z
7
+ * @hash b709c26
8
8
  */
9
9
  :root {
10
10
  --os-gray-100: light-dark(#f9fafb, #1b1d26);
@@ -21,7 +21,7 @@
21
21
  --os-black: light-dark(#000000, #ffffff);
22
22
  --os-white-bg: light-dark(#ffffff, var(--os-gray-200));
23
23
 
24
- --os-default-font: "Roboto", "Arial";
24
+ --os-default-font: "Roboto", "Arial", "Liberation Sans";
25
25
  --os-default-font-size: 10px;
26
26
  --os-link-color: light-dark(#017e84, #02c7b5);
27
27
  --os-link-hover-color: light-dark(#01585c, #4ed8cb);
@@ -2582,6 +2582,9 @@
2582
2582
  position: absolute;
2583
2583
  cursor: pointer;
2584
2584
  }
2585
+ .o-grid.o-dashboard-grid {
2586
+ background: #ffffff;
2587
+ }
2585
2588
  }
2586
2589
 
2587
2590
  /* Originates from src/components/dashboard/clickable_cell_sort_icon/clickable_cell_sort_icon.css */
@@ -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.33
6
- * @date 2026-08-29T09:14:49.301Z
7
- * @hash 5c5b7a2
5
+ * @version 19.1.34
6
+ * @date 2026-09-04T07:25:44.071Z
7
+ * @hash b709c26
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, whenReady, xml } from "@odoo/owl";
@@ -8263,16 +8263,16 @@ const chartShowValuesPlugin = {
8263
8263
  drawLineOrBarOrRadarChartValues(chart, options, ctx);
8264
8264
  break;
8265
8265
  case "bar":
8266
- options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
8266
+ options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
8267
8267
  break;
8268
8268
  case "pyramid":
8269
- drawHorizontalBarChartValues(chart, options, ctx);
8269
+ drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true });
8270
8270
  break;
8271
8271
  case "calendar":
8272
8272
  drawBarChartValues(chart, options, ctx);
8273
8273
  break;
8274
8274
  case "funnel":
8275
- drawHorizontalBarChartValues(chart, options, ctx);
8275
+ drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
8276
8276
  break;
8277
8277
  }
8278
8278
  ctx.restore();
@@ -8342,7 +8342,7 @@ function drawBarChartValues(chart, options, ctx) {
8342
8342
  }
8343
8343
  }
8344
8344
  }
8345
- function drawHorizontalBarChartValues(chart, options, ctx) {
8345
+ function drawHorizontalBarChartValues(chart, options, ctx, args) {
8346
8346
  const textsPositions = {};
8347
8347
  for (const dataset of chart._metasets) {
8348
8348
  if (isTrendLineAxis(dataset.xAxisID)) return;
@@ -8357,7 +8357,7 @@ function drawHorizontalBarChartValues(chart, options, ctx) {
8357
8357
  const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
8358
8358
  const PADDING = 3;
8359
8359
  let xPosition;
8360
- if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
8360
+ if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
8361
8361
  else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
8362
8362
  if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
8363
8363
  for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
@@ -26874,9 +26874,10 @@ var Composer = class extends Component {
26874
26874
  compositionActive = false;
26875
26875
  spreadsheetRect = useSpreadsheetRect();
26876
26876
  lastHoveredTokenIndex = void 0;
26877
- debouncedHover = debounce((tokenIndex, hoveredRect) => {
26877
+ debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
26878
26878
  const selection = this.contentHelper.getCurrentSelection();
26879
- if (selection.start !== selection.end) return;
26879
+ const currentContent = this.props.composerStore.currentContent;
26880
+ if (selection.start !== selection.end || currentContent !== composerContent) return;
26880
26881
  const currentHoveredContext = this.props.composerStore.hoveredTokens;
26881
26882
  this.props.composerStore.hoverToken(tokenIndex);
26882
26883
  if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
@@ -27194,7 +27195,8 @@ var Composer = class extends Component {
27194
27195
  onTokenHover(tokenIndex, hoveredRect) {
27195
27196
  if (this.lastHoveredTokenIndex !== tokenIndex) {
27196
27197
  this.lastHoveredTokenIndex = tokenIndex;
27197
- this.debouncedHover(tokenIndex, hoveredRect);
27198
+ const composerContent = this.props.composerStore.currentContent;
27199
+ this.debouncedHover(tokenIndex, composerContent, hoveredRect);
27198
27200
  }
27199
27201
  }
27200
27202
  /**
@@ -50994,7 +50996,13 @@ var PivotSpreadsheetSidePanel = class extends Component {
50994
50996
  }
50995
50997
  onSelectionChanged(ranges) {
50996
50998
  this.state.rangeHasChanged = true;
50997
- this.state.range = ranges[0];
50999
+ if (ranges.length === 0) {
51000
+ this.state.range = void 0;
51001
+ return;
51002
+ }
51003
+ const sheetId = this.env.model.getters.getActiveSheetId();
51004
+ const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
51005
+ this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
50998
51006
  }
50999
51007
  onSelectionConfirmed() {
51000
51008
  if (this.state.range) {
@@ -53666,6 +53674,7 @@ var CarouselPlugin = class extends CorePlugin {
53666
53674
  return "Success";
53667
53675
  case "UPDATE_CAROUSEL":
53668
53676
  if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
53677
+ for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
53669
53678
  return "Success";
53670
53679
  }
53671
53680
  return "Success";
@@ -58756,14 +58765,16 @@ var FormulaDependencyGraph = class {
58756
58765
  */
58757
58766
  getCellsDependingOn(ranges, visited = new RangeSet()) {
58758
58767
  visited = visited.copy();
58768
+ let initialRangesToRemove = visited.copy();
58759
58769
  const queue = Array.from(ranges).reverse();
58760
58770
  while (queue.length > 0) {
58761
58771
  const range = queue.pop();
58762
58772
  visited.add(range);
58763
58773
  const impactedRanges = this.rTree.search(range);
58764
58774
  queue.push(...impactedRanges.difference(visited));
58775
+ initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
58765
58776
  }
58766
- for (const range of ranges) visited.delete(range);
58777
+ for (const range of initialRangesToRemove) visited.delete(range);
58767
58778
  return visited;
58768
58779
  }
58769
58780
  };
@@ -79196,6 +79207,6 @@ const chartHelpers = {
79196
79207
  //#endregion
79197
79208
  export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, ClientDisconnectedError, CommandResult, CorePlugin, CoreViewPlugin, DEFAULT_LOCALE, DEFAULT_LOCALES, DispatchResult, EvaluationError, LocalTransportService, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, categories, chartHelpers, components, constants, convertAstNodes, coreTypes, createAutocompleteArgumentsProvider, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
79198
79209
 
79199
- __info__.version = "19.1.33";
79200
- __info__.date = "2026-08-29T09:14:49.301Z";
79201
- __info__.hash = "5c5b7a2";
79210
+ __info__.version = "19.1.34";
79211
+ __info__.date = "2026-09-04T07:25:44.071Z";
79212
+ __info__.hash = "b709c26";
@@ -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.33
6
- * @date 2026-08-29T09:14:49.301Z
7
- * @hash 5c5b7a2
5
+ * @version 19.1.34
6
+ * @date 2026-09-04T07:25:44.071Z
7
+ * @hash b709c26
8
8
  */
9
9
 
10
10
  (function(exports, _odoo_owl) {
@@ -8265,16 +8265,16 @@ stores.inject(MyMetaStore, storeInstance);
8265
8265
  drawLineOrBarOrRadarChartValues(chart, options, ctx);
8266
8266
  break;
8267
8267
  case "bar":
8268
- options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
8268
+ options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
8269
8269
  break;
8270
8270
  case "pyramid":
8271
- drawHorizontalBarChartValues(chart, options, ctx);
8271
+ drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true });
8272
8272
  break;
8273
8273
  case "calendar":
8274
8274
  drawBarChartValues(chart, options, ctx);
8275
8275
  break;
8276
8276
  case "funnel":
8277
- drawHorizontalBarChartValues(chart, options, ctx);
8277
+ drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
8278
8278
  break;
8279
8279
  }
8280
8280
  ctx.restore();
@@ -8344,7 +8344,7 @@ stores.inject(MyMetaStore, storeInstance);
8344
8344
  }
8345
8345
  }
8346
8346
  }
8347
- function drawHorizontalBarChartValues(chart, options, ctx) {
8347
+ function drawHorizontalBarChartValues(chart, options, ctx, args) {
8348
8348
  const textsPositions = {};
8349
8349
  for (const dataset of chart._metasets) {
8350
8350
  if (isTrendLineAxis(dataset.xAxisID)) return;
@@ -8359,7 +8359,7 @@ stores.inject(MyMetaStore, storeInstance);
8359
8359
  const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
8360
8360
  const PADDING = 3;
8361
8361
  let xPosition;
8362
- if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
8362
+ if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
8363
8363
  else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
8364
8364
  if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
8365
8365
  for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
@@ -26876,9 +26876,10 @@ stores.inject(MyMetaStore, storeInstance);
26876
26876
  compositionActive = false;
26877
26877
  spreadsheetRect = useSpreadsheetRect();
26878
26878
  lastHoveredTokenIndex = void 0;
26879
- debouncedHover = debounce((tokenIndex, hoveredRect) => {
26879
+ debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
26880
26880
  const selection = this.contentHelper.getCurrentSelection();
26881
- if (selection.start !== selection.end) return;
26881
+ const currentContent = this.props.composerStore.currentContent;
26882
+ if (selection.start !== selection.end || currentContent !== composerContent) return;
26882
26883
  const currentHoveredContext = this.props.composerStore.hoveredTokens;
26883
26884
  this.props.composerStore.hoverToken(tokenIndex);
26884
26885
  if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
@@ -27196,7 +27197,8 @@ stores.inject(MyMetaStore, storeInstance);
27196
27197
  onTokenHover(tokenIndex, hoveredRect) {
27197
27198
  if (this.lastHoveredTokenIndex !== tokenIndex) {
27198
27199
  this.lastHoveredTokenIndex = tokenIndex;
27199
- this.debouncedHover(tokenIndex, hoveredRect);
27200
+ const composerContent = this.props.composerStore.currentContent;
27201
+ this.debouncedHover(tokenIndex, composerContent, hoveredRect);
27200
27202
  }
27201
27203
  }
27202
27204
  /**
@@ -50996,7 +50998,13 @@ stores.inject(MyMetaStore, storeInstance);
50996
50998
  }
50997
50999
  onSelectionChanged(ranges) {
50998
51000
  this.state.rangeHasChanged = true;
50999
- this.state.range = ranges[0];
51001
+ if (ranges.length === 0) {
51002
+ this.state.range = void 0;
51003
+ return;
51004
+ }
51005
+ const sheetId = this.env.model.getters.getActiveSheetId();
51006
+ const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
51007
+ this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
51000
51008
  }
51001
51009
  onSelectionConfirmed() {
51002
51010
  if (this.state.range) {
@@ -53668,6 +53676,7 @@ stores.inject(MyMetaStore, storeInstance);
53668
53676
  return "Success";
53669
53677
  case "UPDATE_CAROUSEL":
53670
53678
  if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
53679
+ for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
53671
53680
  return "Success";
53672
53681
  }
53673
53682
  return "Success";
@@ -58758,14 +58767,16 @@ stores.inject(MyMetaStore, storeInstance);
58758
58767
  */
58759
58768
  getCellsDependingOn(ranges, visited = new RangeSet()) {
58760
58769
  visited = visited.copy();
58770
+ let initialRangesToRemove = visited.copy();
58761
58771
  const queue = Array.from(ranges).reverse();
58762
58772
  while (queue.length > 0) {
58763
58773
  const range = queue.pop();
58764
58774
  visited.add(range);
58765
58775
  const impactedRanges = this.rTree.search(range);
58766
58776
  queue.push(...impactedRanges.difference(visited));
58777
+ initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
58767
58778
  }
58768
- for (const range of ranges) visited.delete(range);
58779
+ for (const range of initialRangesToRemove) visited.delete(range);
58769
58780
  return visited;
58770
58781
  }
58771
58782
  };
@@ -79251,8 +79262,8 @@ exports.stores = stores;
79251
79262
  exports.tokenColors = tokenColors;
79252
79263
  exports.tokenize = tokenize;
79253
79264
 
79254
- __info__.version = "19.1.33";
79255
- __info__.date = "2026-08-29T09:14:49.301Z";
79256
- __info__.hash = "5c5b7a2";
79265
+ __info__.version = "19.1.34";
79266
+ __info__.date = "2026-09-04T07:25:44.071Z";
79267
+ __info__.hash = "b709c26";
79257
79268
 
79258
79269
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);