@odoo/o-spreadsheet 19.2.27 → 19.2.28

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.27
6
- * @date 2026-08-29T09:15:16.412Z
7
- * @hash 9e63c60
5
+ * @version 19.2.28
6
+ * @date 2026-09-04T07:33:57.749Z
7
+ * @hash 102af11
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);
@@ -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.27
6
- * @date 2026-08-29T09:15:15.122Z
7
- * @hash 9e63c60
5
+ * @version 19.2.28
6
+ * @date 2026-09-04T07:33:56.173Z
7
+ * @hash 102af11
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";
@@ -8339,16 +8339,16 @@ const chartShowValuesPlugin = {
8339
8339
  drawLineOrBarOrRadarChartValues(chart, options, ctx);
8340
8340
  break;
8341
8341
  case "bar":
8342
- options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
8342
+ options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
8343
8343
  break;
8344
8344
  case "pyramid":
8345
- drawHorizontalBarChartValues(chart, options, ctx);
8345
+ drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true });
8346
8346
  break;
8347
8347
  case "calendar":
8348
8348
  drawBarChartValues(chart, options, ctx);
8349
8349
  break;
8350
8350
  case "funnel":
8351
- drawHorizontalBarChartValues(chart, options, ctx);
8351
+ drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
8352
8352
  break;
8353
8353
  }
8354
8354
  ctx.restore();
@@ -8418,7 +8418,7 @@ function drawBarChartValues(chart, options, ctx) {
8418
8418
  }
8419
8419
  }
8420
8420
  }
8421
- function drawHorizontalBarChartValues(chart, options, ctx) {
8421
+ function drawHorizontalBarChartValues(chart, options, ctx, args) {
8422
8422
  const textsPositions = {};
8423
8423
  for (const dataset of chart._metasets) {
8424
8424
  if (isTrendLineAxis(dataset.xAxisID)) return;
@@ -8433,7 +8433,7 @@ function drawHorizontalBarChartValues(chart, options, ctx) {
8433
8433
  const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
8434
8434
  const PADDING = 3;
8435
8435
  let xPosition;
8436
- if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
8436
+ if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
8437
8437
  else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
8438
8438
  if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
8439
8439
  for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
@@ -32335,9 +32335,10 @@ var Composer = class extends Component {
32335
32335
  compositionActive = false;
32336
32336
  spreadsheetRect = useSpreadsheetRect();
32337
32337
  lastHoveredTokenIndex = void 0;
32338
- debouncedHover = debounce((tokenIndex, hoveredRect) => {
32338
+ debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
32339
32339
  const selection = this.contentHelper.getCurrentSelection();
32340
- if (selection.start !== selection.end) return;
32340
+ const currentContent = this.props.composerStore.currentContent;
32341
+ if (selection.start !== selection.end || currentContent !== composerContent) return;
32341
32342
  const currentHoveredContext = this.props.composerStore.hoveredTokens;
32342
32343
  this.props.composerStore.hoverToken(tokenIndex);
32343
32344
  if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
@@ -32655,7 +32656,8 @@ var Composer = class extends Component {
32655
32656
  onTokenHover(tokenIndex, hoveredRect) {
32656
32657
  if (this.lastHoveredTokenIndex !== tokenIndex) {
32657
32658
  this.lastHoveredTokenIndex = tokenIndex;
32658
- this.debouncedHover(tokenIndex, hoveredRect);
32659
+ const composerContent = this.props.composerStore.currentContent;
32660
+ this.debouncedHover(tokenIndex, composerContent, hoveredRect);
32659
32661
  }
32660
32662
  }
32661
32663
  /**
@@ -46228,7 +46230,13 @@ var PivotSpreadsheetSidePanel = class extends Component {
46228
46230
  }
46229
46231
  onSelectionChanged(ranges) {
46230
46232
  this.state.rangeHasChanged = true;
46231
- this.state.range = ranges[0];
46233
+ if (ranges.length === 0) {
46234
+ this.state.range = void 0;
46235
+ return;
46236
+ }
46237
+ const sheetId = this.env.model.getters.getActiveSheetId();
46238
+ const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
46239
+ this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
46232
46240
  }
46233
46241
  onSelectionConfirmed() {
46234
46242
  if (this.state.range) {
@@ -55773,6 +55781,7 @@ var CarouselPlugin = class extends CorePlugin {
55773
55781
  return "Success";
55774
55782
  case "UPDATE_CAROUSEL":
55775
55783
  if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
55784
+ for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
55776
55785
  return "Success";
55777
55786
  }
55778
55787
  return "Success";
@@ -60985,14 +60994,16 @@ var FormulaDependencyGraph = class {
60985
60994
  */
60986
60995
  getCellsDependingOn(ranges, visited = new RangeSet()) {
60987
60996
  visited = visited.copy();
60997
+ let initialRangesToRemove = visited.copy();
60988
60998
  const queue = Array.from(ranges).reverse();
60989
60999
  while (queue.length > 0) {
60990
61000
  const range = queue.pop();
60991
61001
  visited.add(range);
60992
61002
  const impactedRanges = this.rTree.search(range);
60993
61003
  queue.push(...impactedRanges.difference(visited));
61004
+ initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
60994
61005
  }
60995
- for (const range of ranges) visited.delete(range);
61006
+ for (const range of initialRangesToRemove) visited.delete(range);
60996
61007
  return visited;
60997
61008
  }
60998
61009
  };
@@ -81825,6 +81836,6 @@ const chartHelpers = {
81825
81836
  //#endregion
81826
81837
  export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, ClientDisconnectedError, CommandResult, CompiledFormula, CorePlugin, CoreViewPlugin, DEFAULT_LOCALE, DEFAULT_LOCALES, DispatchResult, EvaluationError, LocalTransportService, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, canExecuteInReadonly, categories, chartHelpers, components, constants, convertAstNodes, coreTypes, createAutocompleteArgumentsProvider, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, isCoreCommand, isSheetDependent, iterateAstNodes, links, load, lockedSheetAllowedCommands, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
81827
81838
 
81828
- __info__.version = "19.2.27";
81829
- __info__.date = "2026-08-29T09:15:15.122Z";
81830
- __info__.hash = "9e63c60";
81839
+ __info__.version = "19.2.28";
81840
+ __info__.date = "2026-09-04T07:33:56.173Z";
81841
+ __info__.hash = "102af11";
@@ -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.27
6
- * @date 2026-08-29T09:15:15.122Z
7
- * @hash 9e63c60
5
+ * @version 19.2.28
6
+ * @date 2026-09-04T07:33:56.173Z
7
+ * @hash 102af11
8
8
  */
9
9
 
10
10
  (function(exports, _odoo_owl) {
@@ -8341,16 +8341,16 @@ stores.inject(MyMetaStore, storeInstance);
8341
8341
  drawLineOrBarOrRadarChartValues(chart, options, ctx);
8342
8342
  break;
8343
8343
  case "bar":
8344
- options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
8344
+ options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
8345
8345
  break;
8346
8346
  case "pyramid":
8347
- drawHorizontalBarChartValues(chart, options, ctx);
8347
+ drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true });
8348
8348
  break;
8349
8349
  case "calendar":
8350
8350
  drawBarChartValues(chart, options, ctx);
8351
8351
  break;
8352
8352
  case "funnel":
8353
- drawHorizontalBarChartValues(chart, options, ctx);
8353
+ drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
8354
8354
  break;
8355
8355
  }
8356
8356
  ctx.restore();
@@ -8420,7 +8420,7 @@ stores.inject(MyMetaStore, storeInstance);
8420
8420
  }
8421
8421
  }
8422
8422
  }
8423
- function drawHorizontalBarChartValues(chart, options, ctx) {
8423
+ function drawHorizontalBarChartValues(chart, options, ctx, args) {
8424
8424
  const textsPositions = {};
8425
8425
  for (const dataset of chart._metasets) {
8426
8426
  if (isTrendLineAxis(dataset.xAxisID)) return;
@@ -8435,7 +8435,7 @@ stores.inject(MyMetaStore, storeInstance);
8435
8435
  const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
8436
8436
  const PADDING = 3;
8437
8437
  let xPosition;
8438
- if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
8438
+ if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
8439
8439
  else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
8440
8440
  if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
8441
8441
  for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
@@ -32337,9 +32337,10 @@ stores.inject(MyMetaStore, storeInstance);
32337
32337
  compositionActive = false;
32338
32338
  spreadsheetRect = useSpreadsheetRect();
32339
32339
  lastHoveredTokenIndex = void 0;
32340
- debouncedHover = debounce((tokenIndex, hoveredRect) => {
32340
+ debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
32341
32341
  const selection = this.contentHelper.getCurrentSelection();
32342
- if (selection.start !== selection.end) return;
32342
+ const currentContent = this.props.composerStore.currentContent;
32343
+ if (selection.start !== selection.end || currentContent !== composerContent) return;
32343
32344
  const currentHoveredContext = this.props.composerStore.hoveredTokens;
32344
32345
  this.props.composerStore.hoverToken(tokenIndex);
32345
32346
  if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
@@ -32657,7 +32658,8 @@ stores.inject(MyMetaStore, storeInstance);
32657
32658
  onTokenHover(tokenIndex, hoveredRect) {
32658
32659
  if (this.lastHoveredTokenIndex !== tokenIndex) {
32659
32660
  this.lastHoveredTokenIndex = tokenIndex;
32660
- this.debouncedHover(tokenIndex, hoveredRect);
32661
+ const composerContent = this.props.composerStore.currentContent;
32662
+ this.debouncedHover(tokenIndex, composerContent, hoveredRect);
32661
32663
  }
32662
32664
  }
32663
32665
  /**
@@ -46230,7 +46232,13 @@ stores.inject(MyMetaStore, storeInstance);
46230
46232
  }
46231
46233
  onSelectionChanged(ranges) {
46232
46234
  this.state.rangeHasChanged = true;
46233
- this.state.range = ranges[0];
46235
+ if (ranges.length === 0) {
46236
+ this.state.range = void 0;
46237
+ return;
46238
+ }
46239
+ const sheetId = this.env.model.getters.getActiveSheetId();
46240
+ const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
46241
+ this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
46234
46242
  }
46235
46243
  onSelectionConfirmed() {
46236
46244
  if (this.state.range) {
@@ -55775,6 +55783,7 @@ stores.inject(MyMetaStore, storeInstance);
55775
55783
  return "Success";
55776
55784
  case "UPDATE_CAROUSEL":
55777
55785
  if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
55786
+ for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
55778
55787
  return "Success";
55779
55788
  }
55780
55789
  return "Success";
@@ -60987,14 +60996,16 @@ stores.inject(MyMetaStore, storeInstance);
60987
60996
  */
60988
60997
  getCellsDependingOn(ranges, visited = new RangeSet()) {
60989
60998
  visited = visited.copy();
60999
+ let initialRangesToRemove = visited.copy();
60990
61000
  const queue = Array.from(ranges).reverse();
60991
61001
  while (queue.length > 0) {
60992
61002
  const range = queue.pop();
60993
61003
  visited.add(range);
60994
61004
  const impactedRanges = this.rTree.search(range);
60995
61005
  queue.push(...impactedRanges.difference(visited));
61006
+ initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
60996
61007
  }
60997
- for (const range of ranges) visited.delete(range);
61008
+ for (const range of initialRangesToRemove) visited.delete(range);
60998
61009
  return visited;
60999
61010
  }
61000
61011
  };
@@ -81885,8 +81896,8 @@ exports.stores = stores;
81885
81896
  exports.tokenColors = tokenColors;
81886
81897
  exports.tokenize = tokenize;
81887
81898
 
81888
- __info__.version = "19.2.27";
81889
- __info__.date = "2026-08-29T09:15:15.122Z";
81890
- __info__.hash = "9e63c60";
81899
+ __info__.version = "19.2.28";
81900
+ __info__.date = "2026-09-04T07:33:56.173Z";
81901
+ __info__.hash = "102af11";
81891
81902
 
81892
81903
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);