@odoo/o-spreadsheet 19.0.38 → 19.0.42

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.38
6
- * @date 2026-06-17T08:50:59.627Z
7
- * @hash f469250
5
+ * @version 19.0.42
6
+ * @date 2026-07-13T06:28:58.351Z
7
+ * @hash 74cadf3
8
8
  */
9
9
 
10
10
  (function(exports, _odoo_owl) {
@@ -215,7 +215,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
215
215
  const GRAY_200 = "#E7E9ED";
216
216
  const GRAY_100 = "#F9FAFB";
217
217
  const TEXT_BODY = "#374151";
218
- const TEXT_BODY_MUTED = TEXT_BODY + "C2";
218
+ const TEXT_BODY_MUTED = "#374151C2";
219
219
  const TEXT_HEADING = "#111827";
220
220
  const PRIMARY_BUTTON_BG = "#714B67";
221
221
  const PRIMARY_BUTTON_HOVER_BG = "#624159";
@@ -323,9 +323,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
323
323
  ];
324
324
  const DEFAULT_CELL_HEIGHT = 23;
325
325
  const FOOTER_HEIGHT = 2 * 23;
326
- const MENU_SEPARATOR_BORDER_WIDTH = 1;
327
- const MENU_SEPARATOR_PADDING = 5;
328
- const MENU_SEPARATOR_HEIGHT = 1 + 2 * 5;
329
326
  const DEFAULT_STYLE = {
330
327
  align: "left",
331
328
  verticalAlign: "bottom",
@@ -345,7 +342,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
345
342
  const DEFAULT_VERTICAL_ALIGN = DEFAULT_STYLE.verticalAlign;
346
343
  const DEFAULT_WRAPPING_MODE = DEFAULT_STYLE.wrapping;
347
344
  const DEFAULT_FONT_SIZE = DEFAULT_STYLE.fontSize;
348
- const DEFAULT_FONT = "'Roboto', arial";
345
+ const DEFAULT_FONT = "'Roboto', arial, 'Liberation Sans'";
349
346
  const DEFAULT_BORDER_DESC = {
350
347
  style: "thin",
351
348
  color: "#000000"
@@ -1674,7 +1671,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1674
1671
  function isZoneDependent(cmd) {
1675
1672
  return "sheetId" in cmd && "zone" in cmd;
1676
1673
  }
1677
- const invalidateEvaluationCommands = new Set([
1674
+ const invalidateEvaluationCommands = /* @__PURE__ */ new Set([
1678
1675
  "RENAME_SHEET",
1679
1676
  "DELETE_SHEET",
1680
1677
  "CREATE_SHEET",
@@ -1693,7 +1690,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1693
1690
  "REMOVE_PIVOT",
1694
1691
  "DUPLICATE_PIVOT"
1695
1692
  ]);
1696
- const invalidateChartEvaluationCommands = new Set([
1693
+ const invalidateChartEvaluationCommands = /* @__PURE__ */ new Set([
1697
1694
  "EVALUATE_CELLS",
1698
1695
  "EVALUATE_CHARTS",
1699
1696
  "UPDATE_CELL",
@@ -1712,20 +1709,20 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1712
1709
  "UNDO",
1713
1710
  "REDO"
1714
1711
  ]);
1715
- const invalidateDependenciesCommands = new Set(["MOVE_RANGES"]);
1716
- const invalidateCFEvaluationCommands = new Set([
1712
+ const invalidateDependenciesCommands = /* @__PURE__ */ new Set(["MOVE_RANGES"]);
1713
+ const invalidateCFEvaluationCommands = /* @__PURE__ */ new Set([
1717
1714
  "EVALUATE_CELLS",
1718
1715
  "ADD_CONDITIONAL_FORMAT",
1719
1716
  "REMOVE_CONDITIONAL_FORMAT",
1720
1717
  "CHANGE_CONDITIONAL_FORMAT_PRIORITY"
1721
1718
  ]);
1722
- const invalidateBordersCommands = new Set([
1719
+ const invalidateBordersCommands = /* @__PURE__ */ new Set([
1723
1720
  "AUTOFILL_CELL",
1724
1721
  "SET_BORDER",
1725
1722
  "SET_ZONE_BORDERS",
1726
1723
  "SET_BORDERS_ON_TARGET"
1727
1724
  ]);
1728
- const invalidSubtotalFormulasCommands = new Set([
1725
+ const invalidSubtotalFormulasCommands = /* @__PURE__ */ new Set([
1729
1726
  "UNHIDE_COLUMNS_ROWS",
1730
1727
  "HIDE_COLUMNS_ROWS",
1731
1728
  "GROUP_HEADERS",
@@ -1739,7 +1736,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1739
1736
  "UPDATE_TABLE",
1740
1737
  "UPDATE_FILTER"
1741
1738
  ]);
1742
- const readonlyAllowedCommands = new Set([
1739
+ const readonlyAllowedCommands = /* @__PURE__ */ new Set([
1743
1740
  "START",
1744
1741
  "ACTIVATE_SHEET",
1745
1742
  "COPY",
@@ -1753,7 +1750,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1753
1750
  "UPDATE_CAROUSEL_ACTIVE_ITEM",
1754
1751
  "UPDATE_PIVOT"
1755
1752
  ]);
1756
- const coreTypes = new Set([
1753
+ const coreTypes = /* @__PURE__ */ new Set([
1757
1754
  "UPDATE_CELL",
1758
1755
  "UPDATE_CELL_POSITION",
1759
1756
  "CLEAR_CELL",
@@ -1991,7 +1988,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1991
1988
 
1992
1989
  //#endregion
1993
1990
  //#region src/types/conditional_formatting.ts
1994
- const availableConditionalFormatOperators = new Set([
1991
+ const availableConditionalFormatOperators = /* @__PURE__ */ new Set([
1995
1992
  "containsText",
1996
1993
  "notContainsText",
1997
1994
  "isGreaterThan",
@@ -2011,7 +2008,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2011
2008
 
2012
2009
  //#endregion
2013
2010
  //#region src/types/data_validation.ts
2014
- const availableDataValidationOperators = new Set([
2011
+ const availableDataValidationOperators = /* @__PURE__ */ new Set([
2015
2012
  "containsText",
2016
2013
  "notContainsText",
2017
2014
  "isEqualText",
@@ -2736,12 +2733,10 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2736
2733
  const pIntegerAndDecimals = `(?:\\d+(?:${escapeRegExp(locale.thousandsSeparator || "")}\\d{3,})*(?:${decimalSeparator}\\d*)?)`;
2737
2734
  const pOnlyDecimals = `(?:${decimalSeparator}\\d+)`;
2738
2735
  const pNumber = "(?:\\s*" + pIntegerAndDecimals + "|" + pOnlyDecimals + ")(?:e(?:\\+|-)?\\d+)?(?:\\s*%)?";
2739
- const pMinus = "(?:\\s*-)?";
2740
- const pCurrencyFormat = "(?:\\s*[\\$€])?";
2741
2736
  const pNumberExp = "^(?:(?:" + [
2742
- pMinus + pCurrencyFormat + pNumber,
2743
- pMinus + pNumber + pCurrencyFormat,
2744
- pCurrencyFormat + pMinus + pNumber
2737
+ "(?:\\s*-)?(?:\\s*[\\$€])?" + pNumber,
2738
+ "(?:\\s*-)?" + pNumber + "(?:\\s*[\\$€])?",
2739
+ "(?:\\s*[\\$€])?(?:\\s*-)?" + pNumber
2745
2740
  ].join(")|(?:") + "))$";
2746
2741
  return new RegExp(pNumberExp, "i");
2747
2742
  });
@@ -4678,7 +4673,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4678
4673
  function recomputeZones(zones, zonesToRemove = []) {
4679
4674
  if (zones.length <= 1 && zonesToRemove.length === 0) return zones;
4680
4675
  const profilesStartingPosition = [0];
4681
- const profiles = new Map([[0, []]]);
4676
+ const profiles = /* @__PURE__ */ new Map([[0, []]]);
4682
4677
  modifyProfiles(profilesStartingPosition, profiles, zones, false);
4683
4678
  modifyProfiles(profilesStartingPosition, profiles, zonesToRemove, true);
4684
4679
  return constructZonesFromProfiles(profilesStartingPosition, profiles);
@@ -5466,7 +5461,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5466
5461
  //#region src/helpers/edge_scrolling.ts
5467
5462
  const MAX_DELAY = 140;
5468
5463
  const MIN_DELAY = 20;
5469
- const ACCELERATION = .035;
5470
5464
  /**
5471
5465
  * Decreasing exponential function used to determine the "speed" of edge-scrolling
5472
5466
  * as the timeout delay.
@@ -5474,7 +5468,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5474
5468
  * Returns a timeout delay in milliseconds.
5475
5469
  */
5476
5470
  function scrollDelay(value) {
5477
- return 20 + (140 - 20) * Math.exp(-ACCELERATION * (value - 1));
5471
+ return 20 + (140 - 20) * Math.exp(-.035 * (value - 1));
5478
5472
  }
5479
5473
 
5480
5474
  //#endregion
@@ -6315,7 +6309,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
6315
6309
  smallUuid() {
6316
6310
  if (window.crypto) return "10000000-1000".replace(/[01]/g, (c) => {
6317
6311
  const n = Number(c);
6318
- return (n ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> n / 4).toString(16);
6312
+ return (n ^ crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(1))[0] & 15 >> n / 4).toString(16);
6319
6313
  });
6320
6314
  else return "xxxxxxxx-xxxx".replace(/[xy]/g, function(c) {
6321
6315
  const r = Math.random() * 16 | 0;
@@ -6329,7 +6323,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
6329
6323
  uuidv4() {
6330
6324
  if (window.crypto) return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, (c) => {
6331
6325
  const n = Number(c);
6332
- return (n ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> n / 4).toString(16);
6326
+ return (n ^ crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(1))[0] & 15 >> n / 4).toString(16);
6333
6327
  });
6334
6328
  else return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
6335
6329
  const r = Math.random() * 16 | 0;
@@ -7880,10 +7874,10 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
7880
7874
  type: dimension.type
7881
7875
  }));
7882
7876
  if (groupValueString.toLowerCase() === "false") return false;
7883
- return pivotNormalizationValueRegistry.get(dimension.type)(groupValueString, dimension.granularity);
7877
+ return pivotNormalizationValueRegistry.get(dimension.type)(groupValueString, dimension);
7884
7878
  }
7885
- function normalizeDateTime(value, granularity) {
7886
- return pivotTimeAdapter(granularity ?? "month").normalizeFunctionValue(value);
7879
+ function normalizeDateTime(value, dimension) {
7880
+ return pivotTimeAdapter(dimension.granularity ?? "month").normalizeFunctionValue(value);
7887
7881
  }
7888
7882
  function toFunctionPivotValue(value, dimension) {
7889
7883
  if (value === null) return `"null"`;
@@ -23513,9 +23507,7 @@ stores.inject(MyMetaStore, storeInstance);
23513
23507
  this.removeEventListeners();
23514
23508
  }
23515
23509
  get containerStyle() {
23516
- return `
23517
- height:${this.sliceable ? `calc(100% - ${60}px)` : "100%"};
23518
- `;
23510
+ return cssPropertiesToCss({ height: this.sliceable ? `calc(100% - ${60}px)` : "100%" });
23519
23511
  }
23520
23512
  get masterChartContainerStyle() {
23521
23513
  const runtime = this.env.model.getters.getChartRuntime(this.props.chartId);
@@ -28191,11 +28183,11 @@ stores.inject(MyMetaStore, storeInstance);
28191
28183
  getResizerPosition(resizer) {
28192
28184
  const anchorCenteringOffset = (ANCHOR_SIZE - ACTIVE_BORDER_WIDTH) / 2;
28193
28185
  const style = {};
28194
- if (resizer.includes("top")) style.top = `${-anchorCenteringOffset}px`;
28195
- else if (resizer.includes("bottom")) style.bottom = `${-anchorCenteringOffset}px`;
28186
+ if (resizer.includes("top")) style.top = `-3px`;
28187
+ else if (resizer.includes("bottom")) style.bottom = `-3px`;
28196
28188
  else style.bottom = `calc(50% - ${anchorCenteringOffset}px)`;
28197
- if (resizer.includes("left")) style.left = `${-anchorCenteringOffset}px`;
28198
- else if (resizer.includes("right")) style.right = `${-anchorCenteringOffset}px`;
28189
+ if (resizer.includes("left")) style.left = `-3px`;
28190
+ else if (resizer.includes("right")) style.right = `-3px`;
28199
28191
  else style.right = `calc(50% - ${anchorCenteringOffset}px)`;
28200
28192
  return cssPropertiesToCss(style);
28201
28193
  }
@@ -31106,11 +31098,10 @@ stores.inject(MyMetaStore, storeInstance);
31106
31098
  const LINE_VERTICAL_PADDING = 1;
31107
31099
  const PICKER_PADDING = 8;
31108
31100
  const ITEM_BORDER_WIDTH = 1;
31109
- const ITEM_EDGE_LENGTH = 18;
31110
31101
  const ITEMS_PER_LINE = 10;
31111
31102
  const MAGNIFIER_EDGE = 16;
31112
31103
  const ITEM_GAP = 2;
31113
- const CONTENT_WIDTH = ITEMS_PER_LINE * (ITEM_EDGE_LENGTH + 2 * ITEM_BORDER_WIDTH) + (ITEMS_PER_LINE - 1) * ITEM_GAP;
31104
+ const CONTENT_WIDTH = 218;
31114
31105
  const INNER_GRADIENT_WIDTH = CONTENT_WIDTH - 2 * ITEM_BORDER_WIDTH;
31115
31106
  const INNER_GRADIENT_HEIGHT = CONTENT_WIDTH - 30 - 2 * ITEM_BORDER_WIDTH;
31116
31107
  css`
@@ -31122,7 +31113,7 @@ stores.inject(MyMetaStore, storeInstance);
31122
31113
  line-height: 1.2;
31123
31114
  overflow-y: auto;
31124
31115
  overflow-x: hidden;
31125
- width: ${CONTENT_WIDTH + 2 * PICKER_PADDING}px;
31116
+ width: ${234}px;
31126
31117
 
31127
31118
  .o-color-picker-section-name {
31128
31119
  margin: 0px ${ITEM_BORDER_WIDTH}px;
@@ -31148,8 +31139,8 @@ stores.inject(MyMetaStore, storeInstance);
31148
31139
  }
31149
31140
  }
31150
31141
  .o-color-picker-line-item {
31151
- width: ${ITEM_EDGE_LENGTH + 2 * ITEM_BORDER_WIDTH}px;
31152
- height: ${ITEM_EDGE_LENGTH + 2 * ITEM_BORDER_WIDTH}px;
31142
+ width: ${20}px;
31143
+ height: ${20}px;
31153
31144
  margin: 0px;
31154
31145
  border-radius: 50px;
31155
31146
  border: ${ITEM_BORDER_WIDTH}px solid #666666;
@@ -31193,13 +31184,13 @@ stores.inject(MyMetaStore, storeInstance);
31193
31184
  }
31194
31185
 
31195
31186
  .o-custom-selector {
31196
- padding: ${PICKER_PADDING + 2}px ${PICKER_PADDING}px;
31187
+ padding: ${10}px ${PICKER_PADDING}px;
31197
31188
  position: relative;
31198
31189
  .o-gradient {
31199
31190
  margin-bottom: ${MAGNIFIER_EDGE / 2}px;
31200
31191
  border: ${ITEM_BORDER_WIDTH}px solid #c0c0c0;
31201
- width: ${INNER_GRADIENT_WIDTH + 2 * ITEM_BORDER_WIDTH}px;
31202
- height: ${INNER_GRADIENT_HEIGHT + 2 * ITEM_BORDER_WIDTH}px;
31192
+ width: ${218}px;
31193
+ height: ${188}px;
31203
31194
  position: relative;
31204
31195
  }
31205
31196
 
@@ -31337,8 +31328,8 @@ stores.inject(MyMetaStore, storeInstance);
31337
31328
  const left = Math.round(INNER_GRADIENT_WIDTH * clip(s / 100, 0, 1));
31338
31329
  const top = Math.round(INNER_GRADIENT_HEIGHT * clip(1 - 2 * l / (200 - s), 0, 1));
31339
31330
  return cssPropertiesToCss({
31340
- left: `${-MAGNIFIER_EDGE / 2 + left}px`,
31341
- top: `${-MAGNIFIER_EDGE / 2 + top}px`,
31331
+ left: `${-16 / 2 + left}px`,
31332
+ top: `${-16 / 2 + top}px`,
31342
31333
  background: hslaToHex(this.state.currentHslaColor)
31343
31334
  });
31344
31335
  }
@@ -33523,17 +33514,16 @@ stores.inject(MyMetaStore, storeInstance);
33523
33514
 
33524
33515
  //#endregion
33525
33516
  //#region src/components/link/link_editor/link_editor.ts
33526
- const PADDING = 12;
33527
33517
  css`
33528
33518
  .o-link-editor {
33529
33519
  font-size: 13px;
33530
33520
  background-color: white;
33531
33521
  box-shadow: 0 1px 4px 3px rgba(60, 64, 67, 0.15);
33532
- padding: ${PADDING}px;
33522
+ padding: ${12}px;
33533
33523
  display: flex;
33534
33524
  flex-direction: column;
33535
33525
  border-radius: 4px;
33536
- width: ${340 + 2 * PADDING}px;
33526
+ width: ${364}px;
33537
33527
 
33538
33528
  .o-section {
33539
33529
  .o-section-title {
@@ -43226,7 +43216,8 @@ stores.inject(MyMetaStore, storeInstance);
43226
43216
  const { left, top } = this.state.handler ? this.state.position : this.props.position;
43227
43217
  return cssPropertiesToCss({
43228
43218
  top: `${top}px`,
43229
- left: `${left}px`
43219
+ left: `${left}px`,
43220
+ visibility: this.props.isVisible ? "visible" : "hidden"
43230
43221
  });
43231
43222
  }
43232
43223
  get styleNextValue() {
@@ -55116,7 +55107,7 @@ stores.inject(MyMetaStore, storeInstance);
55116
55107
  ev.preventDefault();
55117
55108
  const clipboardData = ev.clipboardData;
55118
55109
  if (!clipboardData) return;
55119
- const image = [...clipboardData.files]?.find((file) => AllowedImageMimeTypes.includes(file.type));
55110
+ const image = [...clipboardData.files].find((file) => AllowedImageMimeTypes.includes(file.type));
55120
55111
  const osClipboard = { content: {
55121
55112
  ["text/plain"]: clipboardData?.getData("text/plain"),
55122
55113
  ["text/html"]: clipboardData?.getData("text/html")
@@ -61061,7 +61052,7 @@ stores.inject(MyMetaStore, storeInstance);
61061
61052
  //#region src/plugins/ui_core_views/cell_evaluation/zone_set.ts
61062
61053
  var ZoneSet = class ZoneSet {
61063
61054
  profilesStartingPosition = [0];
61064
- profiles = new Map([[0, []]]);
61055
+ profiles = /* @__PURE__ */ new Map([[0, []]]);
61065
61056
  constructor(zones = []) {
61066
61057
  for (const zone of zones) this.add(zone);
61067
61058
  }
@@ -62230,12 +62221,22 @@ stores.inject(MyMetaStore, storeInstance);
62230
62221
  handle(cmd) {
62231
62222
  switch (cmd.type) {
62232
62223
  case "START":
62233
- for (const sheetId of this.getters.getSheetIds()) for (const chartId of this.getters.getChartIds(sheetId)) this.tryToAddColors(this.getChartColors(chartId));
62224
+ for (const sheetId of this.getters.getSheetIds()) {
62225
+ for (const chartId of this.getters.getChartIds(sheetId)) this.tryToAddColors(this.getChartColors(chartId));
62226
+ for (const figureId of this.getters.getFigures(sheetId)) this.tryToAddColors(this.getCarouselColors(sheetId, figureId.id));
62227
+ }
62234
62228
  break;
62235
62229
  case "UPDATE_CHART":
62236
62230
  case "CREATE_CHART":
62237
62231
  this.tryToAddColors(this.getChartColors(cmd.chartId));
62238
62232
  break;
62233
+ case "CREATE_CAROUSEL":
62234
+ case "UPDATE_CAROUSEL":
62235
+ this.tryToAddColors(this.getCarouselColors(cmd.sheetId, cmd.figureId));
62236
+ break;
62237
+ case "COLOR_SHEET":
62238
+ if (cmd.color) this.tryToAddColors([cmd.color]);
62239
+ break;
62239
62240
  case "UPDATE_CELL":
62240
62241
  case "ADD_CONDITIONAL_FORMAT":
62241
62242
  case "SET_BORDER":
@@ -62258,8 +62259,12 @@ stores.inject(MyMetaStore, storeInstance);
62258
62259
  }
62259
62260
  computeCustomColors() {
62260
62261
  let usedColors = [];
62261
- for (const sheetId of this.getters.getSheetIds()) usedColors = usedColors.concat(this.getColorsFromCells(sheetId), this.getFormattingColors(sheetId), this.getTableColors(sheetId));
62262
- return [...new Set([...usedColors])];
62262
+ for (const sheetId of this.getters.getSheetIds()) usedColors = usedColors.concat(this.getSheetColors(sheetId), this.getColorsFromCells(sheetId), this.getFormattingColors(sheetId), this.getTableColors(sheetId));
62263
+ return [.../* @__PURE__ */ new Set([...usedColors])];
62264
+ }
62265
+ getSheetColors(sheetId) {
62266
+ const sheet = this.getters.getSheet(sheetId);
62267
+ return sheet.color ? [sheet.color] : [];
62263
62268
  }
62264
62269
  getColorsFromCells(sheetId) {
62265
62270
  const cells = Object.values(this.getters.getCells(sheetId));
@@ -62292,6 +62297,11 @@ stores.inject(MyMetaStore, storeInstance);
62292
62297
  if (chart === void 0) return [];
62293
62298
  return [...JSON.stringify(chart.getDefinition()).matchAll(chartColorRegex)].map((color) => color[1]);
62294
62299
  }
62300
+ getCarouselColors(sheetId, figureId) {
62301
+ if (this.getters.getFigure(sheetId, figureId)?.tag !== "carousel") return [];
62302
+ const titleColor = this.getters.getCarousel(figureId).title?.color;
62303
+ return titleColor ? [titleColor] : [];
62304
+ }
62295
62305
  getTableColors(sheetId) {
62296
62306
  return this.getters.getTables(sheetId).flatMap((table) => {
62297
62307
  const config = table.config;
@@ -62594,13 +62604,13 @@ stores.inject(MyMetaStore, storeInstance);
62594
62604
  const minValue = this.parsePoint(sheetId, range, rule.minimum, "min");
62595
62605
  const midValue = rule.midpoint ? this.parsePoint(sheetId, range, rule.midpoint) : null;
62596
62606
  const maxValue = this.parsePoint(sheetId, range, rule.maximum, "max");
62597
- if (minValue === null || maxValue === null || minValue >= maxValue || midValue && (minValue >= midValue || midValue >= maxValue)) return;
62607
+ if (minValue === null || maxValue === null || minValue >= maxValue || midValue !== null && (minValue >= midValue || midValue >= maxValue)) return;
62598
62608
  const zone = this.getters.getRangeFromSheetXC(sheetId, range).zone;
62599
62609
  const colorThresholds = [{
62600
62610
  value: minValue,
62601
62611
  color: rule.minimum.color
62602
62612
  }];
62603
- if (rule.midpoint && midValue) colorThresholds.push({
62613
+ if (rule.midpoint && midValue !== null) colorThresholds.push({
62604
62614
  value: midValue,
62605
62615
  color: rule.midpoint.color
62606
62616
  });
@@ -67273,7 +67283,7 @@ stores.inject(MyMetaStore, storeInstance);
67273
67283
  };
67274
67284
  }
67275
67285
  };
67276
- const invalidateTableStyleCommandsSet = new Set([
67286
+ const invalidateTableStyleCommandsSet = /* @__PURE__ */ new Set([
67277
67287
  "HIDE_COLUMNS_ROWS",
67278
67288
  "UNHIDE_COLUMNS_ROWS",
67279
67289
  "UNFOLD_HEADER_GROUP",
@@ -69552,14 +69562,14 @@ stores.inject(MyMetaStore, storeInstance);
69552
69562
  adjustPositionX(targetCol) {
69553
69563
  const sheetId = this.sheetId;
69554
69564
  const { start, end } = this.getters.getColDimensions(sheetId, targetCol);
69555
- if (this.offsetX + this.viewportWidth + this.offsetCorrectionX < end) this.offsetX = end - this.viewportWidth;
69565
+ if (this.offsetX + this.viewportWidth + this.offsetCorrectionX < end) this.offsetX = end - this.viewportWidth - this.offsetCorrectionX;
69556
69566
  else if (this.offsetX + this.offsetCorrectionX > start) this.offsetX = start - this.offsetCorrectionX;
69557
69567
  this.adjustViewportZoneX();
69558
69568
  }
69559
69569
  adjustPositionY(targetRow) {
69560
69570
  const sheetId = this.sheetId;
69561
69571
  const { start, end } = this.getters.getRowDimensions(sheetId, targetRow);
69562
- if (this.offsetY + this.viewportHeight + this.offsetCorrectionY < end) this.offsetY = end - this.viewportHeight;
69572
+ if (this.offsetY + this.viewportHeight + this.offsetCorrectionY < end) this.offsetY = end - this.viewportHeight - this.offsetCorrectionY;
69563
69573
  else if (this.offsetY + this.offsetCorrectionY > start) this.offsetY = start - this.offsetCorrectionY;
69564
69574
  this.adjustViewportZoneY();
69565
69575
  }
@@ -72173,11 +72183,14 @@ stores.inject(MyMetaStore, storeInstance);
72173
72183
  }
72174
72184
  });
72175
72185
  this.DOMFocusableElementStore = useStore(DOMFocusableElementStore);
72176
- (0, _odoo_owl.useExternalListener)(window, "click", () => this.state.pickerOpened = false);
72186
+ (0, _odoo_owl.useExternalListener)(window, "click", this.onExternalClick.bind(this), { capture: true });
72177
72187
  (0, _odoo_owl.useEffect)((sheetId) => {
72178
72188
  if (this.props.sheetId === sheetId) this.scrollToSheet();
72179
72189
  }, () => [this.env.model.getters.getActiveSheetId()]);
72180
72190
  }
72191
+ onExternalClick(ev) {
72192
+ if (!ev.target.closest(".o-color-picker")) this.state.pickerOpened = false;
72193
+ }
72181
72194
  focusInputAndSelectContent() {
72182
72195
  if (!this.state.isEditing || !this.sheetNameRef.el) return;
72183
72196
  this.sheetNameRef.el.focus();
@@ -72279,6 +72292,8 @@ stores.inject(MyMetaStore, storeInstance);
72279
72292
  },
72280
72293
  openSheetColorPickerCallback: () => {
72281
72294
  this.state.pickerOpened = true;
72295
+ const sheet = this.env.model.getters.getSheet(this.props.sheetId);
72296
+ this.state.currentPickerColor = sheet.color;
72282
72297
  }
72283
72298
  });
72284
72299
  }
@@ -76838,11 +76853,11 @@ stores.inject(MyMetaStore, storeInstance);
76838
76853
  <!-- each data marker in the series does not have a different color -->
76839
76854
  <c:varyColors val="0"/>
76840
76855
  ${joinXmlNodes(rightDataSetsNodes)}
76841
- <c:axId val="${catAxId + 1}" />
76842
- <c:axId val="${valAxId + 1}" />
76856
+ <c:axId val="${17781238}" />
76857
+ <c:axId val="${88853994}" />
76843
76858
  </c:barChart>
76844
- ${addAx("b", "c:catAx", catAxId + 1, valAxId + 1, chart.axesDesign?.x?.title, chart.fontColor, leftDataSetsNodes.length ? 1 : 0)}
76845
- ${addAx("r", "c:valAx", valAxId + 1, catAxId + 1, chart.axesDesign?.y1?.title, chart.fontColor)}
76859
+ ${addAx("b", "c:catAx", 17781238, 88853994, chart.axesDesign?.x?.title, chart.fontColor, leftDataSetsNodes.length ? 1 : 0)}
76860
+ ${addAx("r", "c:valAx", 88853994, 17781238, chart.axesDesign?.y1?.title, chart.fontColor)}
76846
76861
  ` : ""}`;
76847
76862
  }
76848
76863
  function addComboChart(chart) {
@@ -77080,11 +77095,11 @@ stores.inject(MyMetaStore, storeInstance);
77080
77095
  <!-- each data marker in the series does not have a different color -->
77081
77096
  <c:varyColors val="0"/>
77082
77097
  ${joinXmlNodes(rightDataSetsNodes)}
77083
- <c:axId val="${catAxId + 1}" />
77084
- <c:axId val="${valAxId + 1}" />
77098
+ <c:axId val="${17781238}" />
77099
+ <c:axId val="${88853994}" />
77085
77100
  </c:lineChart>
77086
- ${addAx("b", "c:catAx", catAxId + 1, valAxId + 1, chart.axesDesign?.x?.title, chart.fontColor, leftDataSetsNodes.length ? 1 : 0)}
77087
- ${addAx("r", "c:valAx", valAxId + 1, catAxId + 1, chart.axesDesign?.y1?.title, chart.fontColor)}
77101
+ ${addAx("b", "c:catAx", 17781238, 88853994, chart.axesDesign?.x?.title, chart.fontColor, leftDataSetsNodes.length ? 1 : 0)}
77102
+ ${addAx("r", "c:valAx", 88853994, 17781238, chart.axesDesign?.y1?.title, chart.fontColor)}
77088
77103
  ` : ""}
77089
77104
  `;
77090
77105
  }
@@ -77147,11 +77162,11 @@ stores.inject(MyMetaStore, storeInstance);
77147
77162
  <c:varyColors val="0"/>
77148
77163
  <c:scatterStyle val="lineMarker"/>
77149
77164
  ${joinXmlNodes(rightDataSetsNodes)}
77150
- <c:axId val="${catAxId + 1}" />
77151
- <c:axId val="${valAxId + 1}" />
77165
+ <c:axId val="${17781238}" />
77166
+ <c:axId val="${88853994}" />
77152
77167
  </c:scatterChart>
77153
- ${addAx("b", "c:valAx", catAxId + 1, valAxId + 1, chart.axesDesign?.x?.title, chart.fontColor, leftDataSetsNodes.length ? 1 : 0)}
77154
- ${addAx("r", "c:valAx", valAxId + 1, catAxId + 1, chart.axesDesign?.y1?.title, chart.fontColor)}
77168
+ ${addAx("b", "c:valAx", 17781238, 88853994, chart.axesDesign?.x?.title, chart.fontColor, leftDataSetsNodes.length ? 1 : 0)}
77169
+ ${addAx("r", "c:valAx", 88853994, 17781238, chart.axesDesign?.y1?.title, chart.fontColor)}
77155
77170
  ` : ""}`;
77156
77171
  }
77157
77172
  function addRadarChart(chart) {
@@ -79395,8 +79410,8 @@ exports.stores = stores;
79395
79410
  exports.tokenColors = tokenColors;
79396
79411
  exports.tokenize = tokenize;
79397
79412
 
79398
- __info__.version = "19.0.38";
79399
- __info__.date = "2026-06-17T08:50:59.627Z";
79400
- __info__.hash = "f469250";
79413
+ __info__.version = "19.0.42";
79414
+ __info__.date = "2026-07-13T06:28:58.351Z";
79415
+ __info__.hash = "74cadf3";
79401
79416
 
79402
79417
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);