@odoo/o-spreadsheet 19.1.1 → 19.1.2

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.
@@ -3647,6 +3647,7 @@ declare class Session extends EventBus<CollaborativeEvent> {
3647
3647
  private onClientJoined;
3648
3648
  private onClientLeft;
3649
3649
  private sendUpdateMessage;
3650
+ private sendToTransport;
3650
3651
  /**
3651
3652
  * Send the next pending message
3652
3653
  */
@@ -10342,13 +10343,9 @@ interface Props$D {
10342
10343
  onCellDoubleClicked: (col: HeaderIndex, row: HeaderIndex) => void;
10343
10344
  onCellClicked: (col: HeaderIndex, row: HeaderIndex, modifiers: GridClickModifiers, zoomedMouseEvent: ZoomedMouseEvent<MouseEvent | PointerEvent>) => void;
10344
10345
  onCellRightClicked: (col: HeaderIndex, row: HeaderIndex, coordinates: DOMCoordinates) => void;
10345
- onGridResized: (dimension: Rect) => void;
10346
+ onGridResized: () => void;
10346
10347
  onGridMoved: (deltaX: Pixel, deltaY: Pixel) => void;
10347
10348
  gridOverlayDimensions: string;
10348
- getGridSize: () => {
10349
- width: number;
10350
- height: number;
10351
- };
10352
10349
  }
10353
10350
  declare class GridOverlay extends Component<Props$D, SpreadsheetChildEnv> {
10354
10351
  static template: string;
@@ -10375,7 +10372,6 @@ declare class GridOverlay extends Component<Props$D, SpreadsheetChildEnv> {
10375
10372
  type: ObjectConstructor;
10376
10373
  optional: boolean;
10377
10374
  };
10378
- getGridSize: FunctionConstructor;
10379
10375
  };
10380
10376
  static components: {
10381
10377
  FiguresContainer: typeof FiguresContainer;
@@ -10913,7 +10909,7 @@ declare class Grid extends Component<Props$u, SpreadsheetChildEnv> {
10913
10909
  y: number;
10914
10910
  };
10915
10911
  get isAutofillVisible(): boolean;
10916
- onGridResized({ height, width }: DOMDimension): void;
10912
+ onGridResized(): void;
10917
10913
  private moveCanvas;
10918
10914
  private processSpaceKey;
10919
10915
  getClientPositionKey(client: Client): string;
@@ -12714,6 +12710,7 @@ declare class ClickableCellsStore extends SpreadsheetStore {
12714
12710
  }
12715
12711
 
12716
12712
  interface Props$4 {
12713
+ getGridSize: () => DOMDimension;
12717
12714
  }
12718
12715
  declare class SpreadsheetDashboard extends Component<Props$4, SpreadsheetChildEnv> {
12719
12716
  static template: string;
@@ -12746,9 +12743,10 @@ declare class SpreadsheetDashboard extends Component<Props$4, SpreadsheetChildEn
12746
12743
  getClickableCells(): ClickableCell[];
12747
12744
  selectClickableCell(ev: MouseEvent, clickableCell: ClickableCell): void;
12748
12745
  onClosePopover(): void;
12749
- onGridResized({ height, width }: DOMDimension): void;
12746
+ onGridResized(): void;
12750
12747
  private moveCanvas;
12751
12748
  private getGridRect;
12749
+ private getMaxSheetWidth;
12752
12750
  }
12753
12751
 
12754
12752
  interface Props$3 {
@@ -2,9 +2,9 @@
2
2
  /*
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 19.1.1
6
- * @date 2025-12-26T10:27:38.836Z
7
- * @hash e6313bd
5
+ * @version 19.1.2
6
+ * @date 2026-01-07T16:22:30.262Z
7
+ * @hash febc3e9
8
8
  */
9
9
  :root {
10
10
  --os-gray-100: light-dark(#f9fafb, #1b1d26);
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 19.1.1
6
- * @date 2025-12-26T10:26:46.141Z
7
- * @hash e6313bd
5
+ * @version 19.1.2
6
+ * @date 2026-01-07T16:21:36.757Z
7
+ * @hash febc3e9
8
8
  */
9
9
 
10
10
  import { useEnv, useSubEnv, onWillUnmount, useComponent, status, Component, useRef, onMounted, useEffect, App, blockDom, useState, onPatched, useExternalListener, onWillUpdateProps, onWillStart, onWillPatch, xml, useChildSubEnv, markRaw, toRaw } from '@odoo/owl';
@@ -19608,17 +19608,41 @@ function toCriterionDateNumber(dateValue) {
19608
19608
  const today = DateTime.now();
19609
19609
  switch (dateValue) {
19610
19610
  case "today":
19611
- return jsDateToNumber(today);
19612
- case "yesterday":
19613
- return jsDateToNumber(DateTime.fromTimestamp(today.setDate(today.getDate() - 1)));
19614
- case "tomorrow":
19615
- return jsDateToNumber(DateTime.fromTimestamp(today.setDate(today.getDate() + 1)));
19611
+ return Math.floor(jsDateToNumber(today));
19612
+ case "yesterday": {
19613
+ today.setDate(today.getDate() - 1);
19614
+ return Math.floor(jsDateToNumber(today));
19615
+ }
19616
+ case "tomorrow": {
19617
+ today.setDate(today.getDate() + 1);
19618
+ return Math.floor(jsDateToNumber(today));
19619
+ }
19616
19620
  case "lastWeek":
19617
- return jsDateToNumber(DateTime.fromTimestamp(today.setDate(today.getDate() - 7)));
19618
- case "lastMonth":
19619
- return jsDateToNumber(DateTime.fromTimestamp(today.setMonth(today.getMonth() - 1)));
19621
+ today.setDate(today.getDate() - 6);
19622
+ return Math.floor(jsDateToNumber(today));
19623
+ case "lastMonth": {
19624
+ const lastMonth = today.getMonth() === 0 ? 11 : today.getMonth() - 1;
19625
+ const dateInLastMonth = new DateTime(today.getFullYear(), lastMonth, 1);
19626
+ if (today.getDate() > getDaysInMonth(dateInLastMonth)) {
19627
+ today.setDate(1);
19628
+ }
19629
+ else {
19630
+ today.setDate(today.getDate() + 1);
19631
+ today.setMonth(today.getMonth() - 1);
19632
+ }
19633
+ return Math.floor(jsDateToNumber(today));
19634
+ }
19620
19635
  case "lastYear":
19621
- return jsDateToNumber(DateTime.fromTimestamp(today.setFullYear(today.getFullYear() - 1)));
19636
+ // Handle leap year case
19637
+ if (today.getMonth() === 1 && today.getDate() === 29) {
19638
+ today.setDate(28);
19639
+ today.setFullYear(today.getFullYear() - 1);
19640
+ }
19641
+ else {
19642
+ today.setDate(today.getDate() + 1);
19643
+ today.setFullYear(today.getFullYear() - 1);
19644
+ }
19645
+ return Math.floor(jsDateToNumber(today));
19622
19646
  }
19623
19647
  }
19624
19648
  /** Get all the dates values of a criterion converted to numbers, converting date values such as "today" to actual dates */
@@ -31115,7 +31139,7 @@ class ReadonlyTransportFilter {
31115
31139
  if (message.type === "CLIENT_JOINED" ||
31116
31140
  message.type === "CLIENT_LEFT" ||
31117
31141
  message.type === "CLIENT_MOVED") {
31118
- this.transportService.sendMessage(message);
31142
+ await this.transportService.sendMessage(message);
31119
31143
  }
31120
31144
  // ignore all other messages
31121
31145
  }
@@ -32289,7 +32313,7 @@ class Session extends EventBus {
32289
32313
  }
32290
32314
  delete this.clients[this.clientId];
32291
32315
  this.transportService.leave(this.clientId);
32292
- this.transportService.sendMessage({
32316
+ this.sendToTransport({
32293
32317
  type: "CLIENT_LEFT",
32294
32318
  clientId: this.clientId,
32295
32319
  version: MESSAGE_VERSION,
@@ -32303,7 +32327,7 @@ class Session extends EventBus {
32303
32327
  return;
32304
32328
  }
32305
32329
  const snapshotId = this.uuidGenerator.uuidv4();
32306
- await this.transportService.sendMessage({
32330
+ await this.sendToTransport({
32307
32331
  type: "SNAPSHOT",
32308
32332
  nextRevisionId: snapshotId,
32309
32333
  serverRevisionId: this.serverRevisionId,
@@ -32351,10 +32375,14 @@ class Session extends EventBus {
32351
32375
  const type = currentPosition ? "CLIENT_MOVED" : "CLIENT_JOINED";
32352
32376
  const client = this.getCurrentClient();
32353
32377
  this.clients[this.clientId] = { ...client, position };
32354
- this.transportService.sendMessage({
32378
+ this.sendToTransport({
32355
32379
  type,
32356
32380
  version: MESSAGE_VERSION,
32357
32381
  client: { ...client, position },
32382
+ }).then(() => {
32383
+ if (this.pendingMessages.length > 0 && !this.waitingAck) {
32384
+ this.sendPendingMessage();
32385
+ }
32358
32386
  });
32359
32387
  }
32360
32388
  /**
@@ -32435,7 +32463,7 @@ class Session extends EventBus {
32435
32463
  if (client) {
32436
32464
  const { position } = client;
32437
32465
  if (position) {
32438
- this.transportService.sendMessage({
32466
+ this.sendToTransport({
32439
32467
  type: "CLIENT_MOVED",
32440
32468
  version: MESSAGE_VERSION,
32441
32469
  client: { ...client, position },
@@ -32456,6 +32484,10 @@ class Session extends EventBus {
32456
32484
  }
32457
32485
  this.sendPendingMessage();
32458
32486
  }
32487
+ async sendToTransport(message) {
32488
+ // wrap in an async function to ensure it returns a promise
32489
+ return this.transportService.sendMessage(message);
32490
+ }
32459
32491
  /**
32460
32492
  * Send the next pending message
32461
32493
  */
@@ -32484,9 +32516,14 @@ class Session extends EventBus {
32484
32516
  ${JSON.stringify(message)}`);
32485
32517
  }
32486
32518
  this.waitingAck = true;
32487
- this.transportService.sendMessage({
32519
+ this.sendToTransport({
32488
32520
  ...message,
32489
32521
  serverRevisionId: this.serverRevisionId,
32522
+ }).catch((e) => {
32523
+ if (!(e instanceof ClientDisconnectedError)) {
32524
+ throw e.cause || e;
32525
+ }
32526
+ this.waitingAck = false;
32490
32527
  });
32491
32528
  }
32492
32529
  acknowledge(message) {
@@ -40210,7 +40247,7 @@ criterionEvaluatorRegistry.add("dateIs", {
40210
40247
  return false;
40211
40248
  }
40212
40249
  if (["lastWeek", "lastMonth", "lastYear"].includes(criterion.dateValue)) {
40213
- const today = jsDateToRoundNumber(DateTime.now());
40250
+ const today = Math.floor(jsDateToNumber(DateTime.now()));
40214
40251
  return isDateBetween(dateValue, today, criterionValue);
40215
40252
  }
40216
40253
  return areDatesSameDay(dateValue, criterionValue);
@@ -80268,7 +80305,6 @@ class GridOverlay extends Component {
80268
80305
  onGridMoved: Function,
80269
80306
  gridOverlayDimensions: String,
80270
80307
  slots: { type: Object, optional: true },
80271
- getGridSize: Function,
80272
80308
  };
80273
80309
  static components = {
80274
80310
  FiguresContainer,
@@ -80287,14 +80323,7 @@ class GridOverlay extends Component {
80287
80323
  setup() {
80288
80324
  useCellHovered(this.env, this.gridOverlay);
80289
80325
  const resizeObserver = new ResizeObserver(() => {
80290
- const boundingRect = this.gridOverlayEl.getBoundingClientRect();
80291
- const { width, height } = this.props.getGridSize();
80292
- this.props.onGridResized({
80293
- x: boundingRect.left,
80294
- y: boundingRect.top,
80295
- height: height,
80296
- width: width,
80297
- });
80326
+ this.props.onGridResized();
80298
80327
  });
80299
80328
  onMounted(() => {
80300
80329
  resizeObserver.observe(this.gridOverlayEl);
@@ -89890,7 +89919,8 @@ class Grid extends Component {
89890
89919
  });
89891
89920
  return !(rect.width === 0 || rect.height === 0);
89892
89921
  }
89893
- onGridResized({ height, width }) {
89922
+ onGridResized() {
89923
+ const { height, width } = this.props.getGridSize();
89894
89924
  this.env.model.dispatch("RESIZE_SHEETVIEW", {
89895
89925
  width: width - HEADER_WIDTH,
89896
89926
  height: height - HEADER_HEIGHT,
@@ -93438,10 +93468,8 @@ class SpreadsheetDashboard extends Component {
93438
93468
  });
93439
93469
  }
93440
93470
  get gridContainer() {
93441
- const sheetId = this.env.model.getters.getActiveSheetId();
93442
- const { right } = this.env.model.getters.getSheetZone(sheetId);
93443
- const { end } = this.env.model.getters.getColDimensions(sheetId, right);
93444
- return cssPropertiesToCss({ "max-width": `${end}px` });
93471
+ const maxWidth = this.getMaxSheetWidth();
93472
+ return cssPropertiesToCss({ "max-width": `${maxWidth}px` });
93445
93473
  }
93446
93474
  get gridOverlayDimensions() {
93447
93475
  return cssPropertiesToCss({
@@ -93473,10 +93501,12 @@ class SpreadsheetDashboard extends Component {
93473
93501
  onClosePopover() {
93474
93502
  this.cellPopovers.close();
93475
93503
  }
93476
- onGridResized({ height, width }) {
93504
+ onGridResized() {
93505
+ const { height, width } = this.props.getGridSize();
93506
+ const maxWidth = this.getMaxSheetWidth();
93477
93507
  this.env.model.dispatch("RESIZE_SHEETVIEW", {
93478
- width: width,
93479
- height: height,
93508
+ width: Math.min(maxWidth, width),
93509
+ height,
93480
93510
  gridOffsetX: 0,
93481
93511
  gridOffsetY: 0,
93482
93512
  });
@@ -93494,6 +93524,11 @@ class SpreadsheetDashboard extends Component {
93494
93524
  ...this.env.model.getters.getSheetViewDimensionWithHeaders(),
93495
93525
  };
93496
93526
  }
93527
+ getMaxSheetWidth() {
93528
+ const sheetId = this.env.model.getters.getActiveSheetId();
93529
+ const { right } = this.env.model.getters.getSheetZone(sheetId);
93530
+ return this.env.model.getters.getColDimensions(sheetId, right).end;
93531
+ }
93497
93532
  }
93498
93533
 
93499
93534
  class AbstractHeaderGroup extends Component {
@@ -97895,6 +97930,6 @@ const chartHelpers = { ...CHART_HELPERS, ...CHART_RUNTIME_HELPERS };
97895
97930
  export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, ClientDisconnectedError, CommandResult, CorePlugin, CoreViewPlugin, DEFAULT_LOCALE, DEFAULT_LOCALES, DispatchResult, EvaluationError, LocalTransportService, Model, PivotRuntimeDefinition, Registry$1 as Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, categories, chartHelpers, compile, compileTokens, components, constants, convertAstNodes, coreTypes, createAutocompleteArgumentsProvider, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse$1 as parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
97896
97931
 
97897
97932
 
97898
- __info__.version = "19.1.1";
97899
- __info__.date = "2025-12-26T10:26:46.141Z";
97900
- __info__.hash = "e6313bd";
97933
+ __info__.version = "19.1.2";
97934
+ __info__.date = "2026-01-07T16:21:36.757Z";
97935
+ __info__.hash = "febc3e9";
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 19.1.1
6
- * @date 2025-12-26T10:26:46.141Z
7
- * @hash e6313bd
5
+ * @version 19.1.2
6
+ * @date 2026-01-07T16:21:36.757Z
7
+ * @hash febc3e9
8
8
  */
9
9
 
10
10
  (function (exports, owl) {
@@ -19609,17 +19609,41 @@ stores.inject(MyMetaStore, storeInstance);
19609
19609
  const today = DateTime.now();
19610
19610
  switch (dateValue) {
19611
19611
  case "today":
19612
- return jsDateToNumber(today);
19613
- case "yesterday":
19614
- return jsDateToNumber(DateTime.fromTimestamp(today.setDate(today.getDate() - 1)));
19615
- case "tomorrow":
19616
- return jsDateToNumber(DateTime.fromTimestamp(today.setDate(today.getDate() + 1)));
19612
+ return Math.floor(jsDateToNumber(today));
19613
+ case "yesterday": {
19614
+ today.setDate(today.getDate() - 1);
19615
+ return Math.floor(jsDateToNumber(today));
19616
+ }
19617
+ case "tomorrow": {
19618
+ today.setDate(today.getDate() + 1);
19619
+ return Math.floor(jsDateToNumber(today));
19620
+ }
19617
19621
  case "lastWeek":
19618
- return jsDateToNumber(DateTime.fromTimestamp(today.setDate(today.getDate() - 7)));
19619
- case "lastMonth":
19620
- return jsDateToNumber(DateTime.fromTimestamp(today.setMonth(today.getMonth() - 1)));
19622
+ today.setDate(today.getDate() - 6);
19623
+ return Math.floor(jsDateToNumber(today));
19624
+ case "lastMonth": {
19625
+ const lastMonth = today.getMonth() === 0 ? 11 : today.getMonth() - 1;
19626
+ const dateInLastMonth = new DateTime(today.getFullYear(), lastMonth, 1);
19627
+ if (today.getDate() > getDaysInMonth(dateInLastMonth)) {
19628
+ today.setDate(1);
19629
+ }
19630
+ else {
19631
+ today.setDate(today.getDate() + 1);
19632
+ today.setMonth(today.getMonth() - 1);
19633
+ }
19634
+ return Math.floor(jsDateToNumber(today));
19635
+ }
19621
19636
  case "lastYear":
19622
- return jsDateToNumber(DateTime.fromTimestamp(today.setFullYear(today.getFullYear() - 1)));
19637
+ // Handle leap year case
19638
+ if (today.getMonth() === 1 && today.getDate() === 29) {
19639
+ today.setDate(28);
19640
+ today.setFullYear(today.getFullYear() - 1);
19641
+ }
19642
+ else {
19643
+ today.setDate(today.getDate() + 1);
19644
+ today.setFullYear(today.getFullYear() - 1);
19645
+ }
19646
+ return Math.floor(jsDateToNumber(today));
19623
19647
  }
19624
19648
  }
19625
19649
  /** Get all the dates values of a criterion converted to numbers, converting date values such as "today" to actual dates */
@@ -31116,7 +31140,7 @@ stores.inject(MyMetaStore, storeInstance);
31116
31140
  if (message.type === "CLIENT_JOINED" ||
31117
31141
  message.type === "CLIENT_LEFT" ||
31118
31142
  message.type === "CLIENT_MOVED") {
31119
- this.transportService.sendMessage(message);
31143
+ await this.transportService.sendMessage(message);
31120
31144
  }
31121
31145
  // ignore all other messages
31122
31146
  }
@@ -32290,7 +32314,7 @@ stores.inject(MyMetaStore, storeInstance);
32290
32314
  }
32291
32315
  delete this.clients[this.clientId];
32292
32316
  this.transportService.leave(this.clientId);
32293
- this.transportService.sendMessage({
32317
+ this.sendToTransport({
32294
32318
  type: "CLIENT_LEFT",
32295
32319
  clientId: this.clientId,
32296
32320
  version: MESSAGE_VERSION,
@@ -32304,7 +32328,7 @@ stores.inject(MyMetaStore, storeInstance);
32304
32328
  return;
32305
32329
  }
32306
32330
  const snapshotId = this.uuidGenerator.uuidv4();
32307
- await this.transportService.sendMessage({
32331
+ await this.sendToTransport({
32308
32332
  type: "SNAPSHOT",
32309
32333
  nextRevisionId: snapshotId,
32310
32334
  serverRevisionId: this.serverRevisionId,
@@ -32352,10 +32376,14 @@ stores.inject(MyMetaStore, storeInstance);
32352
32376
  const type = currentPosition ? "CLIENT_MOVED" : "CLIENT_JOINED";
32353
32377
  const client = this.getCurrentClient();
32354
32378
  this.clients[this.clientId] = { ...client, position };
32355
- this.transportService.sendMessage({
32379
+ this.sendToTransport({
32356
32380
  type,
32357
32381
  version: MESSAGE_VERSION,
32358
32382
  client: { ...client, position },
32383
+ }).then(() => {
32384
+ if (this.pendingMessages.length > 0 && !this.waitingAck) {
32385
+ this.sendPendingMessage();
32386
+ }
32359
32387
  });
32360
32388
  }
32361
32389
  /**
@@ -32436,7 +32464,7 @@ stores.inject(MyMetaStore, storeInstance);
32436
32464
  if (client) {
32437
32465
  const { position } = client;
32438
32466
  if (position) {
32439
- this.transportService.sendMessage({
32467
+ this.sendToTransport({
32440
32468
  type: "CLIENT_MOVED",
32441
32469
  version: MESSAGE_VERSION,
32442
32470
  client: { ...client, position },
@@ -32457,6 +32485,10 @@ stores.inject(MyMetaStore, storeInstance);
32457
32485
  }
32458
32486
  this.sendPendingMessage();
32459
32487
  }
32488
+ async sendToTransport(message) {
32489
+ // wrap in an async function to ensure it returns a promise
32490
+ return this.transportService.sendMessage(message);
32491
+ }
32460
32492
  /**
32461
32493
  * Send the next pending message
32462
32494
  */
@@ -32485,9 +32517,14 @@ stores.inject(MyMetaStore, storeInstance);
32485
32517
  ${JSON.stringify(message)}`);
32486
32518
  }
32487
32519
  this.waitingAck = true;
32488
- this.transportService.sendMessage({
32520
+ this.sendToTransport({
32489
32521
  ...message,
32490
32522
  serverRevisionId: this.serverRevisionId,
32523
+ }).catch((e) => {
32524
+ if (!(e instanceof ClientDisconnectedError)) {
32525
+ throw e.cause || e;
32526
+ }
32527
+ this.waitingAck = false;
32491
32528
  });
32492
32529
  }
32493
32530
  acknowledge(message) {
@@ -40211,7 +40248,7 @@ stores.inject(MyMetaStore, storeInstance);
40211
40248
  return false;
40212
40249
  }
40213
40250
  if (["lastWeek", "lastMonth", "lastYear"].includes(criterion.dateValue)) {
40214
- const today = jsDateToRoundNumber(DateTime.now());
40251
+ const today = Math.floor(jsDateToNumber(DateTime.now()));
40215
40252
  return isDateBetween(dateValue, today, criterionValue);
40216
40253
  }
40217
40254
  return areDatesSameDay(dateValue, criterionValue);
@@ -80269,7 +80306,6 @@ stores.inject(MyMetaStore, storeInstance);
80269
80306
  onGridMoved: Function,
80270
80307
  gridOverlayDimensions: String,
80271
80308
  slots: { type: Object, optional: true },
80272
- getGridSize: Function,
80273
80309
  };
80274
80310
  static components = {
80275
80311
  FiguresContainer,
@@ -80288,14 +80324,7 @@ stores.inject(MyMetaStore, storeInstance);
80288
80324
  setup() {
80289
80325
  useCellHovered(this.env, this.gridOverlay);
80290
80326
  const resizeObserver = new ResizeObserver(() => {
80291
- const boundingRect = this.gridOverlayEl.getBoundingClientRect();
80292
- const { width, height } = this.props.getGridSize();
80293
- this.props.onGridResized({
80294
- x: boundingRect.left,
80295
- y: boundingRect.top,
80296
- height: height,
80297
- width: width,
80298
- });
80327
+ this.props.onGridResized();
80299
80328
  });
80300
80329
  owl.onMounted(() => {
80301
80330
  resizeObserver.observe(this.gridOverlayEl);
@@ -89891,7 +89920,8 @@ stores.inject(MyMetaStore, storeInstance);
89891
89920
  });
89892
89921
  return !(rect.width === 0 || rect.height === 0);
89893
89922
  }
89894
- onGridResized({ height, width }) {
89923
+ onGridResized() {
89924
+ const { height, width } = this.props.getGridSize();
89895
89925
  this.env.model.dispatch("RESIZE_SHEETVIEW", {
89896
89926
  width: width - HEADER_WIDTH,
89897
89927
  height: height - HEADER_HEIGHT,
@@ -93439,10 +93469,8 @@ stores.inject(MyMetaStore, storeInstance);
93439
93469
  });
93440
93470
  }
93441
93471
  get gridContainer() {
93442
- const sheetId = this.env.model.getters.getActiveSheetId();
93443
- const { right } = this.env.model.getters.getSheetZone(sheetId);
93444
- const { end } = this.env.model.getters.getColDimensions(sheetId, right);
93445
- return cssPropertiesToCss({ "max-width": `${end}px` });
93472
+ const maxWidth = this.getMaxSheetWidth();
93473
+ return cssPropertiesToCss({ "max-width": `${maxWidth}px` });
93446
93474
  }
93447
93475
  get gridOverlayDimensions() {
93448
93476
  return cssPropertiesToCss({
@@ -93474,10 +93502,12 @@ stores.inject(MyMetaStore, storeInstance);
93474
93502
  onClosePopover() {
93475
93503
  this.cellPopovers.close();
93476
93504
  }
93477
- onGridResized({ height, width }) {
93505
+ onGridResized() {
93506
+ const { height, width } = this.props.getGridSize();
93507
+ const maxWidth = this.getMaxSheetWidth();
93478
93508
  this.env.model.dispatch("RESIZE_SHEETVIEW", {
93479
- width: width,
93480
- height: height,
93509
+ width: Math.min(maxWidth, width),
93510
+ height,
93481
93511
  gridOffsetX: 0,
93482
93512
  gridOffsetY: 0,
93483
93513
  });
@@ -93495,6 +93525,11 @@ stores.inject(MyMetaStore, storeInstance);
93495
93525
  ...this.env.model.getters.getSheetViewDimensionWithHeaders(),
93496
93526
  };
93497
93527
  }
93528
+ getMaxSheetWidth() {
93529
+ const sheetId = this.env.model.getters.getActiveSheetId();
93530
+ const { right } = this.env.model.getters.getSheetZone(sheetId);
93531
+ return this.env.model.getters.getColDimensions(sheetId, right).end;
93532
+ }
93498
93533
  }
93499
93534
 
93500
93535
  class AbstractHeaderGroup extends owl.Component {
@@ -97950,9 +97985,9 @@ stores.inject(MyMetaStore, storeInstance);
97950
97985
  exports.tokenize = tokenize;
97951
97986
 
97952
97987
 
97953
- __info__.version = "19.1.1";
97954
- __info__.date = "2025-12-26T10:26:46.141Z";
97955
- __info__.hash = "e6313bd";
97988
+ __info__.version = "19.1.2";
97989
+ __info__.date = "2026-01-07T16:21:36.757Z";
97990
+ __info__.hash = "febc3e9";
97956
97991
 
97957
97992
 
97958
97993
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);