@odoo/o-spreadsheet 19.0.38 → 19.0.41

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:51:01.002Z
7
- * @hash f469250
5
+ * @version 19.0.41
6
+ * @date 2026-07-01T05:03:21.811Z
7
+ * @hash 346d3c0
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.38
6
- * @date 2026-06-17T08:50:59.627Z
7
- * @hash f469250
5
+ * @version 19.0.41
6
+ * @date 2026-07-01T05:03:20.304Z
7
+ * @hash 346d3c0
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";
@@ -213,7 +213,7 @@ const GRAY_300 = "#D8DADD";
213
213
  const GRAY_200 = "#E7E9ED";
214
214
  const GRAY_100 = "#F9FAFB";
215
215
  const TEXT_BODY = "#374151";
216
- const TEXT_BODY_MUTED = TEXT_BODY + "C2";
216
+ const TEXT_BODY_MUTED = "#374151C2";
217
217
  const TEXT_HEADING = "#111827";
218
218
  const PRIMARY_BUTTON_BG = "#714B67";
219
219
  const PRIMARY_BUTTON_HOVER_BG = "#624159";
@@ -321,9 +321,6 @@ const COLOR_PICKER_DEFAULTS = [
321
321
  ];
322
322
  const DEFAULT_CELL_HEIGHT = 23;
323
323
  const FOOTER_HEIGHT = 2 * 23;
324
- const MENU_SEPARATOR_BORDER_WIDTH = 1;
325
- const MENU_SEPARATOR_PADDING = 5;
326
- const MENU_SEPARATOR_HEIGHT = 1 + 2 * 5;
327
324
  const DEFAULT_STYLE = {
328
325
  align: "left",
329
326
  verticalAlign: "bottom",
@@ -343,7 +340,7 @@ const DEFAULT_NUMBER_STYLE = {
343
340
  const DEFAULT_VERTICAL_ALIGN = DEFAULT_STYLE.verticalAlign;
344
341
  const DEFAULT_WRAPPING_MODE = DEFAULT_STYLE.wrapping;
345
342
  const DEFAULT_FONT_SIZE = DEFAULT_STYLE.fontSize;
346
- const DEFAULT_FONT = "'Roboto', arial";
343
+ const DEFAULT_FONT = "'Roboto', arial, 'Liberation Sans'";
347
344
  const DEFAULT_BORDER_DESC = {
348
345
  style: "thin",
349
346
  color: "#000000"
@@ -1672,7 +1669,7 @@ function isPositionDependent(cmd) {
1672
1669
  function isZoneDependent(cmd) {
1673
1670
  return "sheetId" in cmd && "zone" in cmd;
1674
1671
  }
1675
- const invalidateEvaluationCommands = new Set([
1672
+ const invalidateEvaluationCommands = /* @__PURE__ */ new Set([
1676
1673
  "RENAME_SHEET",
1677
1674
  "DELETE_SHEET",
1678
1675
  "CREATE_SHEET",
@@ -1691,7 +1688,7 @@ const invalidateEvaluationCommands = new Set([
1691
1688
  "REMOVE_PIVOT",
1692
1689
  "DUPLICATE_PIVOT"
1693
1690
  ]);
1694
- const invalidateChartEvaluationCommands = new Set([
1691
+ const invalidateChartEvaluationCommands = /* @__PURE__ */ new Set([
1695
1692
  "EVALUATE_CELLS",
1696
1693
  "EVALUATE_CHARTS",
1697
1694
  "UPDATE_CELL",
@@ -1710,20 +1707,20 @@ const invalidateChartEvaluationCommands = new Set([
1710
1707
  "UNDO",
1711
1708
  "REDO"
1712
1709
  ]);
1713
- const invalidateDependenciesCommands = new Set(["MOVE_RANGES"]);
1714
- const invalidateCFEvaluationCommands = new Set([
1710
+ const invalidateDependenciesCommands = /* @__PURE__ */ new Set(["MOVE_RANGES"]);
1711
+ const invalidateCFEvaluationCommands = /* @__PURE__ */ new Set([
1715
1712
  "EVALUATE_CELLS",
1716
1713
  "ADD_CONDITIONAL_FORMAT",
1717
1714
  "REMOVE_CONDITIONAL_FORMAT",
1718
1715
  "CHANGE_CONDITIONAL_FORMAT_PRIORITY"
1719
1716
  ]);
1720
- const invalidateBordersCommands = new Set([
1717
+ const invalidateBordersCommands = /* @__PURE__ */ new Set([
1721
1718
  "AUTOFILL_CELL",
1722
1719
  "SET_BORDER",
1723
1720
  "SET_ZONE_BORDERS",
1724
1721
  "SET_BORDERS_ON_TARGET"
1725
1722
  ]);
1726
- const invalidSubtotalFormulasCommands = new Set([
1723
+ const invalidSubtotalFormulasCommands = /* @__PURE__ */ new Set([
1727
1724
  "UNHIDE_COLUMNS_ROWS",
1728
1725
  "HIDE_COLUMNS_ROWS",
1729
1726
  "GROUP_HEADERS",
@@ -1737,7 +1734,7 @@ const invalidSubtotalFormulasCommands = new Set([
1737
1734
  "UPDATE_TABLE",
1738
1735
  "UPDATE_FILTER"
1739
1736
  ]);
1740
- const readonlyAllowedCommands = new Set([
1737
+ const readonlyAllowedCommands = /* @__PURE__ */ new Set([
1741
1738
  "START",
1742
1739
  "ACTIVATE_SHEET",
1743
1740
  "COPY",
@@ -1751,7 +1748,7 @@ const readonlyAllowedCommands = new Set([
1751
1748
  "UPDATE_CAROUSEL_ACTIVE_ITEM",
1752
1749
  "UPDATE_PIVOT"
1753
1750
  ]);
1754
- const coreTypes = new Set([
1751
+ const coreTypes = /* @__PURE__ */ new Set([
1755
1752
  "UPDATE_CELL",
1756
1753
  "UPDATE_CELL_POSITION",
1757
1754
  "CLEAR_CELL",
@@ -1989,7 +1986,7 @@ let CommandResult = /* @__PURE__ */ function(CommandResult) {
1989
1986
 
1990
1987
  //#endregion
1991
1988
  //#region src/types/conditional_formatting.ts
1992
- const availableConditionalFormatOperators = new Set([
1989
+ const availableConditionalFormatOperators = /* @__PURE__ */ new Set([
1993
1990
  "containsText",
1994
1991
  "notContainsText",
1995
1992
  "isGreaterThan",
@@ -2009,7 +2006,7 @@ const availableConditionalFormatOperators = new Set([
2009
2006
 
2010
2007
  //#endregion
2011
2008
  //#region src/types/data_validation.ts
2012
- const availableDataValidationOperators = new Set([
2009
+ const availableDataValidationOperators = /* @__PURE__ */ new Set([
2013
2010
  "containsText",
2014
2011
  "notContainsText",
2015
2012
  "isEqualText",
@@ -2734,12 +2731,10 @@ const getNumberRegex = memoize(function getNumberRegex(locale) {
2734
2731
  const pIntegerAndDecimals = `(?:\\d+(?:${escapeRegExp(locale.thousandsSeparator || "")}\\d{3,})*(?:${decimalSeparator}\\d*)?)`;
2735
2732
  const pOnlyDecimals = `(?:${decimalSeparator}\\d+)`;
2736
2733
  const pNumber = "(?:\\s*" + pIntegerAndDecimals + "|" + pOnlyDecimals + ")(?:e(?:\\+|-)?\\d+)?(?:\\s*%)?";
2737
- const pMinus = "(?:\\s*-)?";
2738
- const pCurrencyFormat = "(?:\\s*[\\$€])?";
2739
2734
  const pNumberExp = "^(?:(?:" + [
2740
- pMinus + pCurrencyFormat + pNumber,
2741
- pMinus + pNumber + pCurrencyFormat,
2742
- pCurrencyFormat + pMinus + pNumber
2735
+ "(?:\\s*-)?(?:\\s*[\\$€])?" + pNumber,
2736
+ "(?:\\s*-)?" + pNumber + "(?:\\s*[\\$€])?",
2737
+ "(?:\\s*[\\$€])?(?:\\s*-)?" + pNumber
2743
2738
  ].join(")|(?:") + "))$";
2744
2739
  return new RegExp(pNumberExp, "i");
2745
2740
  });
@@ -4676,7 +4671,7 @@ function getDateCriterionFormattedValues(values, locale) {
4676
4671
  function recomputeZones(zones, zonesToRemove = []) {
4677
4672
  if (zones.length <= 1 && zonesToRemove.length === 0) return zones;
4678
4673
  const profilesStartingPosition = [0];
4679
- const profiles = new Map([[0, []]]);
4674
+ const profiles = /* @__PURE__ */ new Map([[0, []]]);
4680
4675
  modifyProfiles(profilesStartingPosition, profiles, zones, false);
4681
4676
  modifyProfiles(profilesStartingPosition, profiles, zonesToRemove, true);
4682
4677
  return constructZonesFromProfiles(profilesStartingPosition, profiles);
@@ -5464,7 +5459,6 @@ function getCanonicalRepresentation(item) {
5464
5459
  //#region src/helpers/edge_scrolling.ts
5465
5460
  const MAX_DELAY = 140;
5466
5461
  const MIN_DELAY = 20;
5467
- const ACCELERATION = .035;
5468
5462
  /**
5469
5463
  * Decreasing exponential function used to determine the "speed" of edge-scrolling
5470
5464
  * as the timeout delay.
@@ -5472,7 +5466,7 @@ const ACCELERATION = .035;
5472
5466
  * Returns a timeout delay in milliseconds.
5473
5467
  */
5474
5468
  function scrollDelay(value) {
5475
- return 20 + (140 - 20) * Math.exp(-ACCELERATION * (value - 1));
5469
+ return 20 + (140 - 20) * Math.exp(-.035 * (value - 1));
5476
5470
  }
5477
5471
 
5478
5472
  //#endregion
@@ -6313,7 +6307,7 @@ var UuidGenerator = class {
6313
6307
  smallUuid() {
6314
6308
  if (window.crypto) return "10000000-1000".replace(/[01]/g, (c) => {
6315
6309
  const n = Number(c);
6316
- return (n ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> n / 4).toString(16);
6310
+ return (n ^ crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(1))[0] & 15 >> n / 4).toString(16);
6317
6311
  });
6318
6312
  else return "xxxxxxxx-xxxx".replace(/[xy]/g, function(c) {
6319
6313
  const r = Math.random() * 16 | 0;
@@ -6327,7 +6321,7 @@ var UuidGenerator = class {
6327
6321
  uuidv4() {
6328
6322
  if (window.crypto) return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, (c) => {
6329
6323
  const n = Number(c);
6330
- return (n ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> n / 4).toString(16);
6324
+ return (n ^ crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(1))[0] & 15 >> n / 4).toString(16);
6331
6325
  });
6332
6326
  else return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
6333
6327
  const r = Math.random() * 16 | 0;
@@ -7878,10 +7872,10 @@ function toNormalizedPivotValue(dimension, groupValue) {
7878
7872
  type: dimension.type
7879
7873
  }));
7880
7874
  if (groupValueString.toLowerCase() === "false") return false;
7881
- return pivotNormalizationValueRegistry.get(dimension.type)(groupValueString, dimension.granularity);
7875
+ return pivotNormalizationValueRegistry.get(dimension.type)(groupValueString, dimension);
7882
7876
  }
7883
- function normalizeDateTime(value, granularity) {
7884
- return pivotTimeAdapter(granularity ?? "month").normalizeFunctionValue(value);
7877
+ function normalizeDateTime(value, dimension) {
7878
+ return pivotTimeAdapter(dimension.granularity ?? "month").normalizeFunctionValue(value);
7885
7879
  }
7886
7880
  function toFunctionPivotValue(value, dimension) {
7887
7881
  if (value === null) return `"null"`;
@@ -23511,9 +23505,7 @@ var ZoomableChartJsComponent = class extends ChartJsComponent {
23511
23505
  this.removeEventListeners();
23512
23506
  }
23513
23507
  get containerStyle() {
23514
- return `
23515
- height:${this.sliceable ? `calc(100% - ${60}px)` : "100%"};
23516
- `;
23508
+ return cssPropertiesToCss({ height: this.sliceable ? `calc(100% - ${60}px)` : "100%" });
23517
23509
  }
23518
23510
  get masterChartContainerStyle() {
23519
23511
  const runtime = this.env.model.getters.getChartRuntime(this.props.chartId);
@@ -28189,11 +28181,11 @@ var FigureComponent = class extends Component {
28189
28181
  getResizerPosition(resizer) {
28190
28182
  const anchorCenteringOffset = (ANCHOR_SIZE - ACTIVE_BORDER_WIDTH) / 2;
28191
28183
  const style = {};
28192
- if (resizer.includes("top")) style.top = `${-anchorCenteringOffset}px`;
28193
- else if (resizer.includes("bottom")) style.bottom = `${-anchorCenteringOffset}px`;
28184
+ if (resizer.includes("top")) style.top = `-3px`;
28185
+ else if (resizer.includes("bottom")) style.bottom = `-3px`;
28194
28186
  else style.bottom = `calc(50% - ${anchorCenteringOffset}px)`;
28195
- if (resizer.includes("left")) style.left = `${-anchorCenteringOffset}px`;
28196
- else if (resizer.includes("right")) style.right = `${-anchorCenteringOffset}px`;
28187
+ if (resizer.includes("left")) style.left = `-3px`;
28188
+ else if (resizer.includes("right")) style.right = `-3px`;
28197
28189
  else style.right = `calc(50% - ${anchorCenteringOffset}px)`;
28198
28190
  return cssPropertiesToCss(style);
28199
28191
  }
@@ -31104,11 +31096,10 @@ function startDnd(onPointerMove, onPointerUp) {
31104
31096
  const LINE_VERTICAL_PADDING = 1;
31105
31097
  const PICKER_PADDING = 8;
31106
31098
  const ITEM_BORDER_WIDTH = 1;
31107
- const ITEM_EDGE_LENGTH = 18;
31108
31099
  const ITEMS_PER_LINE = 10;
31109
31100
  const MAGNIFIER_EDGE = 16;
31110
31101
  const ITEM_GAP = 2;
31111
- const CONTENT_WIDTH = ITEMS_PER_LINE * (ITEM_EDGE_LENGTH + 2 * ITEM_BORDER_WIDTH) + (ITEMS_PER_LINE - 1) * ITEM_GAP;
31102
+ const CONTENT_WIDTH = 218;
31112
31103
  const INNER_GRADIENT_WIDTH = CONTENT_WIDTH - 2 * ITEM_BORDER_WIDTH;
31113
31104
  const INNER_GRADIENT_HEIGHT = CONTENT_WIDTH - 30 - 2 * ITEM_BORDER_WIDTH;
31114
31105
  css`
@@ -31120,7 +31111,7 @@ css`
31120
31111
  line-height: 1.2;
31121
31112
  overflow-y: auto;
31122
31113
  overflow-x: hidden;
31123
- width: ${CONTENT_WIDTH + 2 * PICKER_PADDING}px;
31114
+ width: ${234}px;
31124
31115
 
31125
31116
  .o-color-picker-section-name {
31126
31117
  margin: 0px ${ITEM_BORDER_WIDTH}px;
@@ -31146,8 +31137,8 @@ css`
31146
31137
  }
31147
31138
  }
31148
31139
  .o-color-picker-line-item {
31149
- width: ${ITEM_EDGE_LENGTH + 2 * ITEM_BORDER_WIDTH}px;
31150
- height: ${ITEM_EDGE_LENGTH + 2 * ITEM_BORDER_WIDTH}px;
31140
+ width: ${20}px;
31141
+ height: ${20}px;
31151
31142
  margin: 0px;
31152
31143
  border-radius: 50px;
31153
31144
  border: ${ITEM_BORDER_WIDTH}px solid #666666;
@@ -31191,13 +31182,13 @@ css`
31191
31182
  }
31192
31183
 
31193
31184
  .o-custom-selector {
31194
- padding: ${PICKER_PADDING + 2}px ${PICKER_PADDING}px;
31185
+ padding: ${10}px ${PICKER_PADDING}px;
31195
31186
  position: relative;
31196
31187
  .o-gradient {
31197
31188
  margin-bottom: ${MAGNIFIER_EDGE / 2}px;
31198
31189
  border: ${ITEM_BORDER_WIDTH}px solid #c0c0c0;
31199
- width: ${INNER_GRADIENT_WIDTH + 2 * ITEM_BORDER_WIDTH}px;
31200
- height: ${INNER_GRADIENT_HEIGHT + 2 * ITEM_BORDER_WIDTH}px;
31190
+ width: ${218}px;
31191
+ height: ${188}px;
31201
31192
  position: relative;
31202
31193
  }
31203
31194
 
@@ -31335,8 +31326,8 @@ var ColorPicker = class extends Component {
31335
31326
  const left = Math.round(INNER_GRADIENT_WIDTH * clip(s / 100, 0, 1));
31336
31327
  const top = Math.round(INNER_GRADIENT_HEIGHT * clip(1 - 2 * l / (200 - s), 0, 1));
31337
31328
  return cssPropertiesToCss({
31338
- left: `${-MAGNIFIER_EDGE / 2 + left}px`,
31339
- top: `${-MAGNIFIER_EDGE / 2 + top}px`,
31329
+ left: `${-16 / 2 + left}px`,
31330
+ top: `${-16 / 2 + top}px`,
31340
31331
  background: hslaToHex(this.state.currentHslaColor)
31341
31332
  });
31342
31333
  }
@@ -33521,17 +33512,16 @@ linkMenuRegistry.add("sheet", {
33521
33512
 
33522
33513
  //#endregion
33523
33514
  //#region src/components/link/link_editor/link_editor.ts
33524
- const PADDING = 12;
33525
33515
  css`
33526
33516
  .o-link-editor {
33527
33517
  font-size: 13px;
33528
33518
  background-color: white;
33529
33519
  box-shadow: 0 1px 4px 3px rgba(60, 64, 67, 0.15);
33530
- padding: ${PADDING}px;
33520
+ padding: ${12}px;
33531
33521
  display: flex;
33532
33522
  flex-direction: column;
33533
33523
  border-radius: 4px;
33534
- width: ${340 + 2 * PADDING}px;
33524
+ width: ${364}px;
33535
33525
 
33536
33526
  .o-section {
33537
33527
  .o-section-title {
@@ -55114,7 +55104,7 @@ var Grid = class extends Component {
55114
55104
  ev.preventDefault();
55115
55105
  const clipboardData = ev.clipboardData;
55116
55106
  if (!clipboardData) return;
55117
- const image = [...clipboardData.files]?.find((file) => AllowedImageMimeTypes.includes(file.type));
55107
+ const image = [...clipboardData.files].find((file) => AllowedImageMimeTypes.includes(file.type));
55118
55108
  const osClipboard = { content: {
55119
55109
  ["text/plain"]: clipboardData?.getData("text/plain"),
55120
55110
  ["text/html"]: clipboardData?.getData("text/html")
@@ -61059,7 +61049,7 @@ var ZoneRBush = class extends import_rbush_min.default {
61059
61049
  //#region src/plugins/ui_core_views/cell_evaluation/zone_set.ts
61060
61050
  var ZoneSet = class ZoneSet {
61061
61051
  profilesStartingPosition = [0];
61062
- profiles = new Map([[0, []]]);
61052
+ profiles = /* @__PURE__ */ new Map([[0, []]]);
61063
61053
  constructor(zones = []) {
61064
61054
  for (const zone of zones) this.add(zone);
61065
61055
  }
@@ -62228,12 +62218,22 @@ var CustomColorsPlugin = class extends CoreViewPlugin {
62228
62218
  handle(cmd) {
62229
62219
  switch (cmd.type) {
62230
62220
  case "START":
62231
- for (const sheetId of this.getters.getSheetIds()) for (const chartId of this.getters.getChartIds(sheetId)) this.tryToAddColors(this.getChartColors(chartId));
62221
+ for (const sheetId of this.getters.getSheetIds()) {
62222
+ for (const chartId of this.getters.getChartIds(sheetId)) this.tryToAddColors(this.getChartColors(chartId));
62223
+ for (const figureId of this.getters.getFigures(sheetId)) this.tryToAddColors(this.getCarouselColors(sheetId, figureId.id));
62224
+ }
62232
62225
  break;
62233
62226
  case "UPDATE_CHART":
62234
62227
  case "CREATE_CHART":
62235
62228
  this.tryToAddColors(this.getChartColors(cmd.chartId));
62236
62229
  break;
62230
+ case "CREATE_CAROUSEL":
62231
+ case "UPDATE_CAROUSEL":
62232
+ this.tryToAddColors(this.getCarouselColors(cmd.sheetId, cmd.figureId));
62233
+ break;
62234
+ case "COLOR_SHEET":
62235
+ if (cmd.color) this.tryToAddColors([cmd.color]);
62236
+ break;
62237
62237
  case "UPDATE_CELL":
62238
62238
  case "ADD_CONDITIONAL_FORMAT":
62239
62239
  case "SET_BORDER":
@@ -62256,8 +62256,12 @@ var CustomColorsPlugin = class extends CoreViewPlugin {
62256
62256
  }
62257
62257
  computeCustomColors() {
62258
62258
  let usedColors = [];
62259
- for (const sheetId of this.getters.getSheetIds()) usedColors = usedColors.concat(this.getColorsFromCells(sheetId), this.getFormattingColors(sheetId), this.getTableColors(sheetId));
62260
- return [...new Set([...usedColors])];
62259
+ for (const sheetId of this.getters.getSheetIds()) usedColors = usedColors.concat(this.getSheetColors(sheetId), this.getColorsFromCells(sheetId), this.getFormattingColors(sheetId), this.getTableColors(sheetId));
62260
+ return [.../* @__PURE__ */ new Set([...usedColors])];
62261
+ }
62262
+ getSheetColors(sheetId) {
62263
+ const sheet = this.getters.getSheet(sheetId);
62264
+ return sheet.color ? [sheet.color] : [];
62261
62265
  }
62262
62266
  getColorsFromCells(sheetId) {
62263
62267
  const cells = Object.values(this.getters.getCells(sheetId));
@@ -62290,6 +62294,11 @@ var CustomColorsPlugin = class extends CoreViewPlugin {
62290
62294
  if (chart === void 0) return [];
62291
62295
  return [...JSON.stringify(chart.getDefinition()).matchAll(chartColorRegex)].map((color) => color[1]);
62292
62296
  }
62297
+ getCarouselColors(sheetId, figureId) {
62298
+ if (this.getters.getFigure(sheetId, figureId)?.tag !== "carousel") return [];
62299
+ const titleColor = this.getters.getCarousel(figureId).title?.color;
62300
+ return titleColor ? [titleColor] : [];
62301
+ }
62293
62302
  getTableColors(sheetId) {
62294
62303
  return this.getters.getTables(sheetId).flatMap((table) => {
62295
62304
  const config = table.config;
@@ -67271,7 +67280,7 @@ var TableComputedStylePlugin = class extends UIPlugin {
67271
67280
  };
67272
67281
  }
67273
67282
  };
67274
- const invalidateTableStyleCommandsSet = new Set([
67283
+ const invalidateTableStyleCommandsSet = /* @__PURE__ */ new Set([
67275
67284
  "HIDE_COLUMNS_ROWS",
67276
67285
  "UNHIDE_COLUMNS_ROWS",
67277
67286
  "UNFOLD_HEADER_GROUP",
@@ -69550,14 +69559,14 @@ var InternalViewport = class {
69550
69559
  adjustPositionX(targetCol) {
69551
69560
  const sheetId = this.sheetId;
69552
69561
  const { start, end } = this.getters.getColDimensions(sheetId, targetCol);
69553
- if (this.offsetX + this.viewportWidth + this.offsetCorrectionX < end) this.offsetX = end - this.viewportWidth;
69562
+ if (this.offsetX + this.viewportWidth + this.offsetCorrectionX < end) this.offsetX = end - this.viewportWidth - this.offsetCorrectionX;
69554
69563
  else if (this.offsetX + this.offsetCorrectionX > start) this.offsetX = start - this.offsetCorrectionX;
69555
69564
  this.adjustViewportZoneX();
69556
69565
  }
69557
69566
  adjustPositionY(targetRow) {
69558
69567
  const sheetId = this.sheetId;
69559
69568
  const { start, end } = this.getters.getRowDimensions(sheetId, targetRow);
69560
- if (this.offsetY + this.viewportHeight + this.offsetCorrectionY < end) this.offsetY = end - this.viewportHeight;
69569
+ if (this.offsetY + this.viewportHeight + this.offsetCorrectionY < end) this.offsetY = end - this.viewportHeight - this.offsetCorrectionY;
69561
69570
  else if (this.offsetY + this.offsetCorrectionY > start) this.offsetY = start - this.offsetCorrectionY;
69562
69571
  this.adjustViewportZoneY();
69563
69572
  }
@@ -72171,11 +72180,14 @@ var BottomBarSheet = class extends Component {
72171
72180
  }
72172
72181
  });
72173
72182
  this.DOMFocusableElementStore = useStore(DOMFocusableElementStore);
72174
- useExternalListener(window, "click", () => this.state.pickerOpened = false);
72183
+ useExternalListener(window, "click", this.onExternalClick.bind(this), { capture: true });
72175
72184
  useEffect((sheetId) => {
72176
72185
  if (this.props.sheetId === sheetId) this.scrollToSheet();
72177
72186
  }, () => [this.env.model.getters.getActiveSheetId()]);
72178
72187
  }
72188
+ onExternalClick(ev) {
72189
+ if (!ev.target.closest(".o-color-picker")) this.state.pickerOpened = false;
72190
+ }
72179
72191
  focusInputAndSelectContent() {
72180
72192
  if (!this.state.isEditing || !this.sheetNameRef.el) return;
72181
72193
  this.sheetNameRef.el.focus();
@@ -72277,6 +72289,8 @@ var BottomBarSheet = class extends Component {
72277
72289
  },
72278
72290
  openSheetColorPickerCallback: () => {
72279
72291
  this.state.pickerOpened = true;
72292
+ const sheet = this.env.model.getters.getSheet(this.props.sheetId);
72293
+ this.state.currentPickerColor = sheet.color;
72280
72294
  }
72281
72295
  });
72282
72296
  }
@@ -76836,11 +76850,11 @@ function addBarChart(chart) {
76836
76850
  <!-- each data marker in the series does not have a different color -->
76837
76851
  <c:varyColors val="0"/>
76838
76852
  ${joinXmlNodes(rightDataSetsNodes)}
76839
- <c:axId val="${catAxId + 1}" />
76840
- <c:axId val="${valAxId + 1}" />
76853
+ <c:axId val="${17781238}" />
76854
+ <c:axId val="${88853994}" />
76841
76855
  </c:barChart>
76842
- ${addAx("b", "c:catAx", catAxId + 1, valAxId + 1, chart.axesDesign?.x?.title, chart.fontColor, leftDataSetsNodes.length ? 1 : 0)}
76843
- ${addAx("r", "c:valAx", valAxId + 1, catAxId + 1, chart.axesDesign?.y1?.title, chart.fontColor)}
76856
+ ${addAx("b", "c:catAx", 17781238, 88853994, chart.axesDesign?.x?.title, chart.fontColor, leftDataSetsNodes.length ? 1 : 0)}
76857
+ ${addAx("r", "c:valAx", 88853994, 17781238, chart.axesDesign?.y1?.title, chart.fontColor)}
76844
76858
  ` : ""}`;
76845
76859
  }
76846
76860
  function addComboChart(chart) {
@@ -77078,11 +77092,11 @@ function addLineChart(chart) {
77078
77092
  <!-- each data marker in the series does not have a different color -->
77079
77093
  <c:varyColors val="0"/>
77080
77094
  ${joinXmlNodes(rightDataSetsNodes)}
77081
- <c:axId val="${catAxId + 1}" />
77082
- <c:axId val="${valAxId + 1}" />
77095
+ <c:axId val="${17781238}" />
77096
+ <c:axId val="${88853994}" />
77083
77097
  </c:lineChart>
77084
- ${addAx("b", "c:catAx", catAxId + 1, valAxId + 1, chart.axesDesign?.x?.title, chart.fontColor, leftDataSetsNodes.length ? 1 : 0)}
77085
- ${addAx("r", "c:valAx", valAxId + 1, catAxId + 1, chart.axesDesign?.y1?.title, chart.fontColor)}
77098
+ ${addAx("b", "c:catAx", 17781238, 88853994, chart.axesDesign?.x?.title, chart.fontColor, leftDataSetsNodes.length ? 1 : 0)}
77099
+ ${addAx("r", "c:valAx", 88853994, 17781238, chart.axesDesign?.y1?.title, chart.fontColor)}
77086
77100
  ` : ""}
77087
77101
  `;
77088
77102
  }
@@ -77145,11 +77159,11 @@ function addScatterChart(chart) {
77145
77159
  <c:varyColors val="0"/>
77146
77160
  <c:scatterStyle val="lineMarker"/>
77147
77161
  ${joinXmlNodes(rightDataSetsNodes)}
77148
- <c:axId val="${catAxId + 1}" />
77149
- <c:axId val="${valAxId + 1}" />
77162
+ <c:axId val="${17781238}" />
77163
+ <c:axId val="${88853994}" />
77150
77164
  </c:scatterChart>
77151
- ${addAx("b", "c:valAx", catAxId + 1, valAxId + 1, chart.axesDesign?.x?.title, chart.fontColor, leftDataSetsNodes.length ? 1 : 0)}
77152
- ${addAx("r", "c:valAx", valAxId + 1, catAxId + 1, chart.axesDesign?.y1?.title, chart.fontColor)}
77165
+ ${addAx("b", "c:valAx", 17781238, 88853994, chart.axesDesign?.x?.title, chart.fontColor, leftDataSetsNodes.length ? 1 : 0)}
77166
+ ${addAx("r", "c:valAx", 88853994, 17781238, chart.axesDesign?.y1?.title, chart.fontColor)}
77153
77167
  ` : ""}`;
77154
77168
  }
77155
77169
  function addRadarChart(chart) {
@@ -79342,6 +79356,6 @@ const chartHelpers = {
79342
79356
  //#endregion
79343
79357
  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 };
79344
79358
 
79345
- __info__.version = "19.0.38";
79346
- __info__.date = "2026-06-17T08:50:59.627Z";
79347
- __info__.hash = "f469250";
79359
+ __info__.version = "19.0.41";
79360
+ __info__.date = "2026-07-01T05:03:20.304Z";
79361
+ __info__.hash = "346d3c0";