@odoo/o-spreadsheet 19.0.48 → 19.0.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 19.0.48
6
- * @date 2026-08-29T09:14:14.219Z
7
- * @hash 0a6c168
5
+ * @version 19.0.49
6
+ * @date 2026-09-04T07:28:56.108Z
7
+ * @hash 3926688
8
8
  */
9
9
  /* Originates from src/components/top_bar/top_bar.scss */
10
10
  @media (max-width: 1200px) {
@@ -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.0.48
6
- * @date 2026-08-29T09:14:12.472Z
7
- * @hash 0a6c168
5
+ * @version 19.0.49
6
+ * @date 2026-09-04T07:28:54.520Z
7
+ * @hash 3926688
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";
@@ -19422,10 +19422,10 @@ const chartShowValuesPlugin = {
19422
19422
  case "bar":
19423
19423
  case "line":
19424
19424
  case "radar":
19425
- options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
19425
+ options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
19426
19426
  break;
19427
19427
  case "funnel":
19428
- drawHorizontalBarChartValues(chart, options, ctx);
19428
+ drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
19429
19429
  break;
19430
19430
  }
19431
19431
  ctx.restore();
@@ -19466,7 +19466,7 @@ function drawLineOrBarOrRadarChartValues(chart, options, ctx) {
19466
19466
  }
19467
19467
  }
19468
19468
  }
19469
- function drawHorizontalBarChartValues(chart, options, ctx) {
19469
+ function drawHorizontalBarChartValues(chart, options, ctx, args) {
19470
19470
  const textsPositions = {};
19471
19471
  for (const dataset of chart._metasets) {
19472
19472
  if (isTrendLineAxis(dataset.xAxisID)) return;
@@ -19481,7 +19481,7 @@ function drawHorizontalBarChartValues(chart, options, ctx) {
19481
19481
  const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
19482
19482
  const PADDING = 3;
19483
19483
  let xPosition;
19484
- if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
19484
+ if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
19485
19485
  else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
19486
19486
  if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
19487
19487
  for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
@@ -29572,9 +29572,10 @@ var Composer = class extends Component {
29572
29572
  compositionActive = false;
29573
29573
  spreadsheetRect = useSpreadsheetRect();
29574
29574
  lastHoveredTokenIndex = void 0;
29575
- debouncedHover = debounce((tokenIndex, hoveredRect) => {
29575
+ debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
29576
29576
  const selection = this.contentHelper.getCurrentSelection();
29577
- if (selection.start !== selection.end) return;
29577
+ const currentContent = this.props.composerStore.currentContent;
29578
+ if (selection.start !== selection.end || currentContent !== composerContent) return;
29578
29579
  const currentHoveredContext = this.props.composerStore.hoveredTokens;
29579
29580
  this.props.composerStore.hoverToken(tokenIndex);
29580
29581
  if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
@@ -29891,7 +29892,8 @@ var Composer = class extends Component {
29891
29892
  onTokenHover(tokenIndex, hoveredRect) {
29892
29893
  if (this.lastHoveredTokenIndex !== tokenIndex) {
29893
29894
  this.lastHoveredTokenIndex = tokenIndex;
29894
- this.debouncedHover(tokenIndex, hoveredRect);
29895
+ const composerContent = this.props.composerStore.currentContent;
29896
+ this.debouncedHover(tokenIndex, composerContent, hoveredRect);
29895
29897
  }
29896
29898
  }
29897
29899
  /**
@@ -31496,6 +31498,42 @@ var ColorPicker = class extends Component {
31496
31498
  }
31497
31499
  };
31498
31500
 
31501
+ //#endregion
31502
+ //#region src/components/icons/raw_svgs.ts
31503
+ /**
31504
+ * SVG markup used in `css` tagged templates as `data:image/svg+xml` URIs.
31505
+ *
31506
+ * Keep these values in a separate module so Rolldown references them instead
31507
+ * of inlining them into template literals. Inlining produces nested template
31508
+ * literals, which the downstream `rjsmin` minifier cannot parse correctly
31509
+ * because it relies on regular expressions.
31510
+ *
31511
+ * Do not inline these constants.
31512
+ */
31513
+ const CHECK_SVG = `
31514
+ <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
31515
+ <path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
31516
+ </svg>
31517
+ `;
31518
+ const CIRCLE_SVG = `
31519
+ <svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
31520
+ <circle r="2" fill="#FFF"/>
31521
+ </svg>
31522
+ `;
31523
+ const TRANSPARENT_BACKGROUND_SVG = `
31524
+ <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
31525
+ <path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
31526
+ </svg>
31527
+ `;
31528
+ const CURSOR_SVG = `
31529
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="16"><path d="M6.5.4c1.3-.8 2.9-.1 3.8 1.4l2.9 5.1c.2.4.9 1.6-.4 2.3l-1.6.9 1.8 3.1c.2.4.1 1-.2 1.2l-1.6 1c-.3.1-.9 0-1.1-.4l-1.8-3.1-1.6 1c-.6.4-1.7 0-2.2-.8L0 4.3"/><path fill="#fff" d="M9.1 2a1.4 1.1 60 0 0-1.7-.6L5.5 2.5l.9 1.6-1 .6-.9-1.6-.6.4 1.8 3.1-1.3.7-1.8-3.1-1 .6 3.8 6.6 6.8-3.98M3.9 8.8 10.82 5l.795 1.4-6.81 3.96"/></svg>
31530
+ `;
31531
+ const CARET_DOWN_SVG = `
31532
+ <svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
31533
+ <polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
31534
+ </svg>
31535
+ `;
31536
+
31499
31537
  //#endregion
31500
31538
  //#region src/components/side_panel/components/section/section.ts
31501
31539
  var Section = class extends Component {
@@ -31522,11 +31560,7 @@ css`
31522
31560
  cursor: pointer;
31523
31561
  border: 1px solid ${GRAY_300};
31524
31562
  background-position: 1px 1px;
31525
- background-image: url("data:image/svg+xml,${encodeURIComponent(`
31526
- <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
31527
- <path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
31528
- </svg>
31529
- `)}");
31563
+ background-image: url("data:image/svg+xml,${encodeURIComponent(TRANSPARENT_BACKGROUND_SVG)}");
31530
31564
  }
31531
31565
  `;
31532
31566
  var RoundColorPicker = class extends Component {
@@ -32787,11 +32821,6 @@ var FilterMenuCriterion = class extends Component {
32787
32821
 
32788
32822
  //#endregion
32789
32823
  //#region src/components/side_panel/components/checkbox/checkbox.ts
32790
- const CHECK_SVG = `
32791
- <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
32792
- <path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
32793
- </svg>
32794
- `;
32795
32824
  const CHECKBOX_WIDTH = 14;
32796
32825
  css`
32797
32826
  label.o-checkbox {
@@ -45023,9 +45052,7 @@ var HoveredIconStore = class extends SpreadsheetStore {
45023
45052
  //#region src/components/grid_overlay/grid_overlay.ts
45024
45053
  css`
45025
45054
  .o-paint-format-cursor {
45026
- cursor: url("data:image/svg+xml,${encodeURIComponent(`
45027
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="16"><path d="M6.5.4c1.3-.8 2.9-.1 3.8 1.4l2.9 5.1c.2.4.9 1.6-.4 2.3l-1.6.9 1.8 3.1c.2.4.1 1-.2 1.2l-1.6 1c-.3.1-.9 0-1.1-.4l-1.8-3.1-1.6 1c-.6.4-1.7 0-2.2-.8L0 4.3"/><path fill="#fff" d="M9.1 2a1.4 1.1 60 0 0-1.7-.6L5.5 2.5l.9 1.6-1 .6-.9-1.6-.6.4 1.8 3.1-1.3.7-1.8-3.1-1 .6 3.8 6.6 6.8-3.98M3.9 8.8 10.82 5l.795 1.4-6.81 3.96"/></svg>
45028
- `)}"), auto;
45055
+ cursor: url("data:image/svg+xml,${encodeURIComponent(CURSOR_SVG)}"), auto;
45029
45056
  }
45030
45057
  `;
45031
45058
  function useCellHovered(env, gridRef) {
@@ -48656,11 +48683,7 @@ css`
48656
48683
  border-radius: 8px;
48657
48684
 
48658
48685
  &:checked {
48659
- background: url("data:image/svg+xml,${encodeURIComponent(`
48660
- <svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
48661
- <circle r="2" fill="#FFF"/>
48662
- </svg>
48663
- `)}");
48686
+ background: url("data:image/svg+xml,${encodeURIComponent(CIRCLE_SVG)}");
48664
48687
  background-color: ${ACTION_COLOR};
48665
48688
  border-color: ${ACTION_COLOR};
48666
48689
  }
@@ -53389,7 +53412,13 @@ var PivotSpreadsheetSidePanel = class extends Component {
53389
53412
  }
53390
53413
  onSelectionChanged(ranges) {
53391
53414
  this.state.rangeHasChanged = true;
53392
- this.state.range = ranges[0];
53415
+ if (ranges.length === 0) {
53416
+ this.state.range = void 0;
53417
+ return;
53418
+ }
53419
+ const sheetId = this.env.model.getters.getActiveSheetId();
53420
+ const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
53421
+ this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
53393
53422
  }
53394
53423
  onSelectionConfirmed() {
53395
53424
  if (this.state.range) {
@@ -59770,6 +59799,7 @@ var CarouselPlugin = class extends CorePlugin {
59770
59799
  return "Success";
59771
59800
  case "UPDATE_CAROUSEL":
59772
59801
  if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
59802
+ for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
59773
59803
  return "Success";
59774
59804
  }
59775
59805
  return "Success";
@@ -61364,14 +61394,16 @@ var FormulaDependencyGraph = class {
61364
61394
  */
61365
61395
  getCellsDependingOn(ranges, visited = new RangeSet()) {
61366
61396
  visited = visited.copy();
61397
+ let initialRangesToRemove = visited.copy();
61367
61398
  const queue = Array.from(ranges).reverse();
61368
61399
  while (queue.length > 0) {
61369
61400
  const range = queue.pop();
61370
61401
  visited.add(range);
61371
61402
  const impactedRanges = this.rTree.search(range);
61372
61403
  queue.push(...impactedRanges.difference(visited));
61404
+ initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
61373
61405
  }
61374
- for (const range of ranges) visited.delete(range);
61406
+ for (const range of initialRangesToRemove) visited.delete(range);
61375
61407
  return visited;
61376
61408
  }
61377
61409
  };
@@ -74876,11 +74908,7 @@ css`
74876
74908
  appearance: none;
74877
74909
  -webkit-appearance: none;
74878
74910
  -moz-appearance: none;
74879
- background: transparent url("data:image/svg+xml,${encodeURIComponent(`
74880
- <svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
74881
- <polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
74882
- </svg>
74883
- `)}")
74911
+ background: transparent url("data:image/svg+xml,${encodeURIComponent(CARET_DOWN_SVG)}")
74884
74912
  no-repeat right center;
74885
74913
  text-overflow: ellipsis;
74886
74914
 
@@ -79464,6 +79492,6 @@ const chartHelpers = {
79464
79492
  //#endregion
79465
79493
  export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, ClientDisconnectedError, CommandResult, CorePlugin, CoreViewPlugin, DispatchResult, EvaluationError, LocalTransportService, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, chartHelpers, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
79466
79494
 
79467
- __info__.version = "19.0.48";
79468
- __info__.date = "2026-08-29T09:14:12.472Z";
79469
- __info__.hash = "0a6c168";
79495
+ __info__.version = "19.0.49";
79496
+ __info__.date = "2026-09-04T07:28:54.520Z";
79497
+ __info__.hash = "3926688";
@@ -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.0.48
6
- * @date 2026-08-29T09:14:12.472Z
7
- * @hash 0a6c168
5
+ * @version 19.0.49
6
+ * @date 2026-09-04T07:28:54.520Z
7
+ * @hash 3926688
8
8
  */
9
9
 
10
10
  (function(exports, _odoo_owl) {
@@ -19424,10 +19424,10 @@ stores.inject(MyMetaStore, storeInstance);
19424
19424
  case "bar":
19425
19425
  case "line":
19426
19426
  case "radar":
19427
- options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
19427
+ options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
19428
19428
  break;
19429
19429
  case "funnel":
19430
- drawHorizontalBarChartValues(chart, options, ctx);
19430
+ drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
19431
19431
  break;
19432
19432
  }
19433
19433
  ctx.restore();
@@ -19468,7 +19468,7 @@ stores.inject(MyMetaStore, storeInstance);
19468
19468
  }
19469
19469
  }
19470
19470
  }
19471
- function drawHorizontalBarChartValues(chart, options, ctx) {
19471
+ function drawHorizontalBarChartValues(chart, options, ctx, args) {
19472
19472
  const textsPositions = {};
19473
19473
  for (const dataset of chart._metasets) {
19474
19474
  if (isTrendLineAxis(dataset.xAxisID)) return;
@@ -19483,7 +19483,7 @@ stores.inject(MyMetaStore, storeInstance);
19483
19483
  const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
19484
19484
  const PADDING = 3;
19485
19485
  let xPosition;
19486
- if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
19486
+ if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
19487
19487
  else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
19488
19488
  if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
19489
19489
  for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
@@ -29574,9 +29574,10 @@ stores.inject(MyMetaStore, storeInstance);
29574
29574
  compositionActive = false;
29575
29575
  spreadsheetRect = useSpreadsheetRect();
29576
29576
  lastHoveredTokenIndex = void 0;
29577
- debouncedHover = debounce((tokenIndex, hoveredRect) => {
29577
+ debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
29578
29578
  const selection = this.contentHelper.getCurrentSelection();
29579
- if (selection.start !== selection.end) return;
29579
+ const currentContent = this.props.composerStore.currentContent;
29580
+ if (selection.start !== selection.end || currentContent !== composerContent) return;
29580
29581
  const currentHoveredContext = this.props.composerStore.hoveredTokens;
29581
29582
  this.props.composerStore.hoverToken(tokenIndex);
29582
29583
  if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
@@ -29893,7 +29894,8 @@ stores.inject(MyMetaStore, storeInstance);
29893
29894
  onTokenHover(tokenIndex, hoveredRect) {
29894
29895
  if (this.lastHoveredTokenIndex !== tokenIndex) {
29895
29896
  this.lastHoveredTokenIndex = tokenIndex;
29896
- this.debouncedHover(tokenIndex, hoveredRect);
29897
+ const composerContent = this.props.composerStore.currentContent;
29898
+ this.debouncedHover(tokenIndex, composerContent, hoveredRect);
29897
29899
  }
29898
29900
  }
29899
29901
  /**
@@ -31498,6 +31500,42 @@ stores.inject(MyMetaStore, storeInstance);
31498
31500
  }
31499
31501
  };
31500
31502
 
31503
+ //#endregion
31504
+ //#region src/components/icons/raw_svgs.ts
31505
+ /**
31506
+ * SVG markup used in `css` tagged templates as `data:image/svg+xml` URIs.
31507
+ *
31508
+ * Keep these values in a separate module so Rolldown references them instead
31509
+ * of inlining them into template literals. Inlining produces nested template
31510
+ * literals, which the downstream `rjsmin` minifier cannot parse correctly
31511
+ * because it relies on regular expressions.
31512
+ *
31513
+ * Do not inline these constants.
31514
+ */
31515
+ const CHECK_SVG = `
31516
+ <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
31517
+ <path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
31518
+ </svg>
31519
+ `;
31520
+ const CIRCLE_SVG = `
31521
+ <svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
31522
+ <circle r="2" fill="#FFF"/>
31523
+ </svg>
31524
+ `;
31525
+ const TRANSPARENT_BACKGROUND_SVG = `
31526
+ <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
31527
+ <path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
31528
+ </svg>
31529
+ `;
31530
+ const CURSOR_SVG = `
31531
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="16"><path d="M6.5.4c1.3-.8 2.9-.1 3.8 1.4l2.9 5.1c.2.4.9 1.6-.4 2.3l-1.6.9 1.8 3.1c.2.4.1 1-.2 1.2l-1.6 1c-.3.1-.9 0-1.1-.4l-1.8-3.1-1.6 1c-.6.4-1.7 0-2.2-.8L0 4.3"/><path fill="#fff" d="M9.1 2a1.4 1.1 60 0 0-1.7-.6L5.5 2.5l.9 1.6-1 .6-.9-1.6-.6.4 1.8 3.1-1.3.7-1.8-3.1-1 .6 3.8 6.6 6.8-3.98M3.9 8.8 10.82 5l.795 1.4-6.81 3.96"/></svg>
31532
+ `;
31533
+ const CARET_DOWN_SVG = `
31534
+ <svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
31535
+ <polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
31536
+ </svg>
31537
+ `;
31538
+
31501
31539
  //#endregion
31502
31540
  //#region src/components/side_panel/components/section/section.ts
31503
31541
  var Section = class extends _odoo_owl.Component {
@@ -31524,11 +31562,7 @@ stores.inject(MyMetaStore, storeInstance);
31524
31562
  cursor: pointer;
31525
31563
  border: 1px solid ${GRAY_300};
31526
31564
  background-position: 1px 1px;
31527
- background-image: url("data:image/svg+xml,${encodeURIComponent(`
31528
- <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
31529
- <path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
31530
- </svg>
31531
- `)}");
31565
+ background-image: url("data:image/svg+xml,${encodeURIComponent(TRANSPARENT_BACKGROUND_SVG)}");
31532
31566
  }
31533
31567
  `;
31534
31568
  var RoundColorPicker = class extends _odoo_owl.Component {
@@ -32789,11 +32823,6 @@ stores.inject(MyMetaStore, storeInstance);
32789
32823
 
32790
32824
  //#endregion
32791
32825
  //#region src/components/side_panel/components/checkbox/checkbox.ts
32792
- const CHECK_SVG = `
32793
- <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
32794
- <path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
32795
- </svg>
32796
- `;
32797
32826
  const CHECKBOX_WIDTH = 14;
32798
32827
  css`
32799
32828
  label.o-checkbox {
@@ -45025,9 +45054,7 @@ stores.inject(MyMetaStore, storeInstance);
45025
45054
  //#region src/components/grid_overlay/grid_overlay.ts
45026
45055
  css`
45027
45056
  .o-paint-format-cursor {
45028
- cursor: url("data:image/svg+xml,${encodeURIComponent(`
45029
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="16"><path d="M6.5.4c1.3-.8 2.9-.1 3.8 1.4l2.9 5.1c.2.4.9 1.6-.4 2.3l-1.6.9 1.8 3.1c.2.4.1 1-.2 1.2l-1.6 1c-.3.1-.9 0-1.1-.4l-1.8-3.1-1.6 1c-.6.4-1.7 0-2.2-.8L0 4.3"/><path fill="#fff" d="M9.1 2a1.4 1.1 60 0 0-1.7-.6L5.5 2.5l.9 1.6-1 .6-.9-1.6-.6.4 1.8 3.1-1.3.7-1.8-3.1-1 .6 3.8 6.6 6.8-3.98M3.9 8.8 10.82 5l.795 1.4-6.81 3.96"/></svg>
45030
- `)}"), auto;
45057
+ cursor: url("data:image/svg+xml,${encodeURIComponent(CURSOR_SVG)}"), auto;
45031
45058
  }
45032
45059
  `;
45033
45060
  function useCellHovered(env, gridRef) {
@@ -48658,11 +48685,7 @@ stores.inject(MyMetaStore, storeInstance);
48658
48685
  border-radius: 8px;
48659
48686
 
48660
48687
  &:checked {
48661
- background: url("data:image/svg+xml,${encodeURIComponent(`
48662
- <svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
48663
- <circle r="2" fill="#FFF"/>
48664
- </svg>
48665
- `)}");
48688
+ background: url("data:image/svg+xml,${encodeURIComponent(CIRCLE_SVG)}");
48666
48689
  background-color: ${ACTION_COLOR};
48667
48690
  border-color: ${ACTION_COLOR};
48668
48691
  }
@@ -53391,7 +53414,13 @@ stores.inject(MyMetaStore, storeInstance);
53391
53414
  }
53392
53415
  onSelectionChanged(ranges) {
53393
53416
  this.state.rangeHasChanged = true;
53394
- this.state.range = ranges[0];
53417
+ if (ranges.length === 0) {
53418
+ this.state.range = void 0;
53419
+ return;
53420
+ }
53421
+ const sheetId = this.env.model.getters.getActiveSheetId();
53422
+ const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
53423
+ this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
53395
53424
  }
53396
53425
  onSelectionConfirmed() {
53397
53426
  if (this.state.range) {
@@ -59772,6 +59801,7 @@ stores.inject(MyMetaStore, storeInstance);
59772
59801
  return "Success";
59773
59802
  case "UPDATE_CAROUSEL":
59774
59803
  if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
59804
+ for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
59775
59805
  return "Success";
59776
59806
  }
59777
59807
  return "Success";
@@ -61366,14 +61396,16 @@ stores.inject(MyMetaStore, storeInstance);
61366
61396
  */
61367
61397
  getCellsDependingOn(ranges, visited = new RangeSet()) {
61368
61398
  visited = visited.copy();
61399
+ let initialRangesToRemove = visited.copy();
61369
61400
  const queue = Array.from(ranges).reverse();
61370
61401
  while (queue.length > 0) {
61371
61402
  const range = queue.pop();
61372
61403
  visited.add(range);
61373
61404
  const impactedRanges = this.rTree.search(range);
61374
61405
  queue.push(...impactedRanges.difference(visited));
61406
+ initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
61375
61407
  }
61376
- for (const range of ranges) visited.delete(range);
61408
+ for (const range of initialRangesToRemove) visited.delete(range);
61377
61409
  return visited;
61378
61410
  }
61379
61411
  };
@@ -74878,11 +74910,7 @@ stores.inject(MyMetaStore, storeInstance);
74878
74910
  appearance: none;
74879
74911
  -webkit-appearance: none;
74880
74912
  -moz-appearance: none;
74881
- background: transparent url("data:image/svg+xml,${encodeURIComponent(`
74882
- <svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
74883
- <polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
74884
- </svg>
74885
- `)}")
74913
+ background: transparent url("data:image/svg+xml,${encodeURIComponent(CARET_DOWN_SVG)}")
74886
74914
  no-repeat right center;
74887
74915
  text-overflow: ellipsis;
74888
74916
 
@@ -79517,8 +79545,8 @@ exports.stores = stores;
79517
79545
  exports.tokenColors = tokenColors;
79518
79546
  exports.tokenize = tokenize;
79519
79547
 
79520
- __info__.version = "19.0.48";
79521
- __info__.date = "2026-08-29T09:14:12.472Z";
79522
- __info__.hash = "0a6c168";
79548
+ __info__.version = "19.0.49";
79549
+ __info__.date = "2026-09-04T07:28:54.520Z";
79550
+ __info__.hash = "3926688";
79523
79551
 
79524
79552
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);