@odoo/o-spreadsheet 18.3.26 → 18.3.27

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 18.3.26
6
- * @date 2025-11-12T14:15:33.133Z
7
- * @hash f31a752
5
+ * @version 18.3.27
6
+ * @date 2025-11-24T07:40:29.469Z
7
+ * @hash 57b11b8
8
8
  */
9
9
 
10
10
  'use strict';
@@ -22991,6 +22991,7 @@ class AbstractComposerStore extends SpreadsheetStore {
22991
22991
  }
22992
22992
  this.selectionStart = start;
22993
22993
  this.selectionEnd = end;
22994
+ this.editionMode = "editing";
22994
22995
  this.computeFormulaCursorContext();
22995
22996
  this.computeParenthesisRelatedToCursor();
22996
22997
  }
@@ -23728,7 +23729,6 @@ function insertTokenAfterArgSeparator(tokenAtCursor, value) {
23728
23729
  // replace the whole token
23729
23730
  start = tokenAtCursor.start;
23730
23731
  }
23731
- this.composer.stopComposerRangeSelection();
23732
23732
  this.composer.changeComposerCursorSelection(start, end);
23733
23733
  this.composer.replaceComposerCursorSelection(value);
23734
23734
  }
@@ -23746,7 +23746,6 @@ function insertTokenAfterLeftParenthesis(tokenAtCursor, value) {
23746
23746
  // replace the whole token
23747
23747
  start = tokenAtCursor.start;
23748
23748
  }
23749
- this.composer.stopComposerRangeSelection();
23750
23749
  this.composer.changeComposerCursorSelection(start, end);
23751
23750
  this.composer.replaceComposerCursorSelection(value);
23752
23751
  }
@@ -43887,7 +43886,6 @@ class Composer extends owl.Component {
43887
43886
  return;
43888
43887
  }
43889
43888
  const newSelection = this.contentHelper.getCurrentSelection();
43890
- this.props.composerStore.stopComposerRangeSelection();
43891
43889
  this.props.onComposerContentFocused();
43892
43890
  this.props.composerStore.changeComposerCursorSelection(newSelection.start, newSelection.end);
43893
43891
  this.processTokenAtCursor();
@@ -54347,7 +54345,10 @@ class AbstractResizer extends owl.Component {
54347
54345
  this.state.waitingForMove = false;
54348
54346
  }
54349
54347
  onMouseMove(ev) {
54350
- if (this.state.isResizing || this.state.isMoving || this.state.isSelecting) {
54348
+ if (this.env.model.getters.isReadonly() ||
54349
+ this.state.isResizing ||
54350
+ this.state.isMoving ||
54351
+ this.state.isSelecting) {
54351
54352
  return;
54352
54353
  }
54353
54354
  this._computeHandleDisplay(ev);
@@ -54400,6 +54401,10 @@ class AbstractResizer extends owl.Component {
54400
54401
  if (index < 0) {
54401
54402
  return;
54402
54403
  }
54404
+ if (this.env.model.getters.isReadonly()) {
54405
+ this._selectElement(index, false);
54406
+ return;
54407
+ }
54403
54408
  if (this.state.waitingForMove) {
54404
54409
  if (!this.env.model.getters.isGridSelectionActive()) {
54405
54410
  this._selectElement(index, false);
@@ -56106,24 +56111,24 @@ const DEFAULT_SIDE_PANEL_SIZE = 350;
56106
56111
  const MIN_SHEET_VIEW_WIDTH = 150;
56107
56112
  class SidePanelStore extends SpreadsheetStore {
56108
56113
  mutators = ["open", "toggle", "close", "changePanelSize", "resetPanelSize"];
56109
- initialPanelProps = {};
56114
+ currentPanelProps = {};
56110
56115
  componentTag = "";
56111
56116
  panelSize = DEFAULT_SIDE_PANEL_SIZE;
56112
56117
  get isOpen() {
56113
56118
  if (!this.componentTag) {
56114
56119
  return false;
56115
56120
  }
56116
- return this.computeState(this.componentTag, this.initialPanelProps).isOpen;
56121
+ return this.computeState(this.componentTag, this.currentPanelProps).isOpen;
56117
56122
  }
56118
56123
  get panelProps() {
56119
- const state = this.computeState(this.componentTag, this.initialPanelProps);
56124
+ const state = this.computeState(this.componentTag, this.currentPanelProps);
56120
56125
  if (state.isOpen) {
56121
56126
  return state.props ?? {};
56122
56127
  }
56123
56128
  return {};
56124
56129
  }
56125
56130
  get panelKey() {
56126
- const state = this.computeState(this.componentTag, this.initialPanelProps);
56131
+ const state = this.computeState(this.componentTag, this.currentPanelProps);
56127
56132
  if (state.isOpen) {
56128
56133
  return state.key;
56129
56134
  }
@@ -56135,10 +56140,10 @@ class SidePanelStore extends SpreadsheetStore {
56135
56140
  return;
56136
56141
  }
56137
56142
  if (this.isOpen && componentTag !== this.componentTag) {
56138
- this.initialPanelProps?.onCloseSidePanel?.();
56143
+ this.currentPanelProps?.onCloseSidePanel?.();
56139
56144
  }
56140
56145
  this.componentTag = componentTag;
56141
- this.initialPanelProps = state.props ?? {};
56146
+ this.currentPanelProps = state.props ?? {};
56142
56147
  }
56143
56148
  toggle(componentTag, panelProps) {
56144
56149
  if (this.isOpen && componentTag === this.componentTag) {
@@ -56149,8 +56154,8 @@ class SidePanelStore extends SpreadsheetStore {
56149
56154
  }
56150
56155
  }
56151
56156
  close() {
56152
- this.initialPanelProps.onCloseSidePanel?.();
56153
- this.initialPanelProps = {};
56157
+ this.currentPanelProps.onCloseSidePanel?.();
56158
+ this.currentPanelProps = {};
56154
56159
  this.componentTag = "";
56155
56160
  }
56156
56161
  changePanelSize(size, spreadsheetElWidth) {
@@ -56176,7 +56181,11 @@ class SidePanelStore extends SpreadsheetStore {
56176
56181
  };
56177
56182
  }
56178
56183
  else {
56179
- return customComputeState(this.getters, panelProps);
56184
+ const state = customComputeState(this.getters, panelProps);
56185
+ if (state.isOpen) {
56186
+ this.currentPanelProps = state.props ?? this.currentPanelProps;
56187
+ }
56188
+ return state;
56180
56189
  }
56181
56190
  }
56182
56191
  }
@@ -76344,7 +76353,7 @@ css /* scss */ `
76344
76353
  border-radius: 4px;
76345
76354
  font-weight: 500;
76346
76355
  font-size: 14px;
76347
- height: 32px;
76356
+ min-height: 32px;
76348
76357
  line-height: 16px;
76349
76358
  flex-grow: 1;
76350
76359
  background-color: ${BUTTON_BG};
@@ -81069,6 +81078,6 @@ exports.tokenColors = tokenColors;
81069
81078
  exports.tokenize = tokenize;
81070
81079
 
81071
81080
 
81072
- __info__.version = "18.3.26";
81073
- __info__.date = "2025-11-12T14:15:33.133Z";
81074
- __info__.hash = "f31a752";
81081
+ __info__.version = "18.3.27";
81082
+ __info__.date = "2025-11-24T07:40:29.469Z";
81083
+ __info__.hash = "57b11b8";
@@ -8901,7 +8901,7 @@ interface ClosedSidePanel {
8901
8901
  type SidePanelState = OpenSidePanel | ClosedSidePanel;
8902
8902
  declare class SidePanelStore extends SpreadsheetStore {
8903
8903
  mutators: readonly ["open", "toggle", "close", "changePanelSize", "resetPanelSize"];
8904
- initialPanelProps: SidePanelProps;
8904
+ currentPanelProps: SidePanelProps;
8905
8905
  componentTag: string;
8906
8906
  panelSize: number;
8907
8907
  get isOpen(): boolean;
@@ -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 18.3.26
6
- * @date 2025-11-12T14:15:33.133Z
7
- * @hash f31a752
5
+ * @version 18.3.27
6
+ * @date 2025-11-24T07:40:29.469Z
7
+ * @hash 57b11b8
8
8
  */
9
9
 
10
10
  import { useEnv, useSubEnv, onWillUnmount, useComponent, status, Component, useRef, onMounted, useEffect, App, blockDom, useState, onPatched, onWillPatch, onWillUpdateProps, useExternalListener, onWillStart, xml, useChildSubEnv, markRaw, toRaw } from '@odoo/owl';
@@ -22989,6 +22989,7 @@ class AbstractComposerStore extends SpreadsheetStore {
22989
22989
  }
22990
22990
  this.selectionStart = start;
22991
22991
  this.selectionEnd = end;
22992
+ this.editionMode = "editing";
22992
22993
  this.computeFormulaCursorContext();
22993
22994
  this.computeParenthesisRelatedToCursor();
22994
22995
  }
@@ -23726,7 +23727,6 @@ function insertTokenAfterArgSeparator(tokenAtCursor, value) {
23726
23727
  // replace the whole token
23727
23728
  start = tokenAtCursor.start;
23728
23729
  }
23729
- this.composer.stopComposerRangeSelection();
23730
23730
  this.composer.changeComposerCursorSelection(start, end);
23731
23731
  this.composer.replaceComposerCursorSelection(value);
23732
23732
  }
@@ -23744,7 +23744,6 @@ function insertTokenAfterLeftParenthesis(tokenAtCursor, value) {
23744
23744
  // replace the whole token
23745
23745
  start = tokenAtCursor.start;
23746
23746
  }
23747
- this.composer.stopComposerRangeSelection();
23748
23747
  this.composer.changeComposerCursorSelection(start, end);
23749
23748
  this.composer.replaceComposerCursorSelection(value);
23750
23749
  }
@@ -43885,7 +43884,6 @@ class Composer extends Component {
43885
43884
  return;
43886
43885
  }
43887
43886
  const newSelection = this.contentHelper.getCurrentSelection();
43888
- this.props.composerStore.stopComposerRangeSelection();
43889
43887
  this.props.onComposerContentFocused();
43890
43888
  this.props.composerStore.changeComposerCursorSelection(newSelection.start, newSelection.end);
43891
43889
  this.processTokenAtCursor();
@@ -54345,7 +54343,10 @@ class AbstractResizer extends Component {
54345
54343
  this.state.waitingForMove = false;
54346
54344
  }
54347
54345
  onMouseMove(ev) {
54348
- if (this.state.isResizing || this.state.isMoving || this.state.isSelecting) {
54346
+ if (this.env.model.getters.isReadonly() ||
54347
+ this.state.isResizing ||
54348
+ this.state.isMoving ||
54349
+ this.state.isSelecting) {
54349
54350
  return;
54350
54351
  }
54351
54352
  this._computeHandleDisplay(ev);
@@ -54398,6 +54399,10 @@ class AbstractResizer extends Component {
54398
54399
  if (index < 0) {
54399
54400
  return;
54400
54401
  }
54402
+ if (this.env.model.getters.isReadonly()) {
54403
+ this._selectElement(index, false);
54404
+ return;
54405
+ }
54401
54406
  if (this.state.waitingForMove) {
54402
54407
  if (!this.env.model.getters.isGridSelectionActive()) {
54403
54408
  this._selectElement(index, false);
@@ -56104,24 +56109,24 @@ const DEFAULT_SIDE_PANEL_SIZE = 350;
56104
56109
  const MIN_SHEET_VIEW_WIDTH = 150;
56105
56110
  class SidePanelStore extends SpreadsheetStore {
56106
56111
  mutators = ["open", "toggle", "close", "changePanelSize", "resetPanelSize"];
56107
- initialPanelProps = {};
56112
+ currentPanelProps = {};
56108
56113
  componentTag = "";
56109
56114
  panelSize = DEFAULT_SIDE_PANEL_SIZE;
56110
56115
  get isOpen() {
56111
56116
  if (!this.componentTag) {
56112
56117
  return false;
56113
56118
  }
56114
- return this.computeState(this.componentTag, this.initialPanelProps).isOpen;
56119
+ return this.computeState(this.componentTag, this.currentPanelProps).isOpen;
56115
56120
  }
56116
56121
  get panelProps() {
56117
- const state = this.computeState(this.componentTag, this.initialPanelProps);
56122
+ const state = this.computeState(this.componentTag, this.currentPanelProps);
56118
56123
  if (state.isOpen) {
56119
56124
  return state.props ?? {};
56120
56125
  }
56121
56126
  return {};
56122
56127
  }
56123
56128
  get panelKey() {
56124
- const state = this.computeState(this.componentTag, this.initialPanelProps);
56129
+ const state = this.computeState(this.componentTag, this.currentPanelProps);
56125
56130
  if (state.isOpen) {
56126
56131
  return state.key;
56127
56132
  }
@@ -56133,10 +56138,10 @@ class SidePanelStore extends SpreadsheetStore {
56133
56138
  return;
56134
56139
  }
56135
56140
  if (this.isOpen && componentTag !== this.componentTag) {
56136
- this.initialPanelProps?.onCloseSidePanel?.();
56141
+ this.currentPanelProps?.onCloseSidePanel?.();
56137
56142
  }
56138
56143
  this.componentTag = componentTag;
56139
- this.initialPanelProps = state.props ?? {};
56144
+ this.currentPanelProps = state.props ?? {};
56140
56145
  }
56141
56146
  toggle(componentTag, panelProps) {
56142
56147
  if (this.isOpen && componentTag === this.componentTag) {
@@ -56147,8 +56152,8 @@ class SidePanelStore extends SpreadsheetStore {
56147
56152
  }
56148
56153
  }
56149
56154
  close() {
56150
- this.initialPanelProps.onCloseSidePanel?.();
56151
- this.initialPanelProps = {};
56155
+ this.currentPanelProps.onCloseSidePanel?.();
56156
+ this.currentPanelProps = {};
56152
56157
  this.componentTag = "";
56153
56158
  }
56154
56159
  changePanelSize(size, spreadsheetElWidth) {
@@ -56174,7 +56179,11 @@ class SidePanelStore extends SpreadsheetStore {
56174
56179
  };
56175
56180
  }
56176
56181
  else {
56177
- return customComputeState(this.getters, panelProps);
56182
+ const state = customComputeState(this.getters, panelProps);
56183
+ if (state.isOpen) {
56184
+ this.currentPanelProps = state.props ?? this.currentPanelProps;
56185
+ }
56186
+ return state;
56178
56187
  }
56179
56188
  }
56180
56189
  }
@@ -76342,7 +76351,7 @@ css /* scss */ `
76342
76351
  border-radius: 4px;
76343
76352
  font-weight: 500;
76344
76353
  font-size: 14px;
76345
- height: 32px;
76354
+ min-height: 32px;
76346
76355
  line-height: 16px;
76347
76356
  flex-grow: 1;
76348
76357
  background-color: ${BUTTON_BG};
@@ -81021,6 +81030,6 @@ const chartHelpers = { ...CHART_HELPERS, ...CHART_RUNTIME_HELPERS };
81021
81030
  export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, CommandResult, CorePlugin, CoreViewPlugin, DispatchResult, EvaluationError, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, chartHelpers, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
81022
81031
 
81023
81032
 
81024
- __info__.version = "18.3.26";
81025
- __info__.date = "2025-11-12T14:15:33.133Z";
81026
- __info__.hash = "f31a752";
81033
+ __info__.version = "18.3.27";
81034
+ __info__.date = "2025-11-24T07:40:29.469Z";
81035
+ __info__.hash = "57b11b8";
@@ -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 18.3.26
6
- * @date 2025-11-12T14:15:33.133Z
7
- * @hash f31a752
5
+ * @version 18.3.27
6
+ * @date 2025-11-24T07:40:29.469Z
7
+ * @hash 57b11b8
8
8
  */
9
9
 
10
10
  (function (exports, owl) {
@@ -22990,6 +22990,7 @@ stores.inject(MyMetaStore, storeInstance);
22990
22990
  }
22991
22991
  this.selectionStart = start;
22992
22992
  this.selectionEnd = end;
22993
+ this.editionMode = "editing";
22993
22994
  this.computeFormulaCursorContext();
22994
22995
  this.computeParenthesisRelatedToCursor();
22995
22996
  }
@@ -23727,7 +23728,6 @@ stores.inject(MyMetaStore, storeInstance);
23727
23728
  // replace the whole token
23728
23729
  start = tokenAtCursor.start;
23729
23730
  }
23730
- this.composer.stopComposerRangeSelection();
23731
23731
  this.composer.changeComposerCursorSelection(start, end);
23732
23732
  this.composer.replaceComposerCursorSelection(value);
23733
23733
  }
@@ -23745,7 +23745,6 @@ stores.inject(MyMetaStore, storeInstance);
23745
23745
  // replace the whole token
23746
23746
  start = tokenAtCursor.start;
23747
23747
  }
23748
- this.composer.stopComposerRangeSelection();
23749
23748
  this.composer.changeComposerCursorSelection(start, end);
23750
23749
  this.composer.replaceComposerCursorSelection(value);
23751
23750
  }
@@ -43886,7 +43885,6 @@ stores.inject(MyMetaStore, storeInstance);
43886
43885
  return;
43887
43886
  }
43888
43887
  const newSelection = this.contentHelper.getCurrentSelection();
43889
- this.props.composerStore.stopComposerRangeSelection();
43890
43888
  this.props.onComposerContentFocused();
43891
43889
  this.props.composerStore.changeComposerCursorSelection(newSelection.start, newSelection.end);
43892
43890
  this.processTokenAtCursor();
@@ -54346,7 +54344,10 @@ stores.inject(MyMetaStore, storeInstance);
54346
54344
  this.state.waitingForMove = false;
54347
54345
  }
54348
54346
  onMouseMove(ev) {
54349
- if (this.state.isResizing || this.state.isMoving || this.state.isSelecting) {
54347
+ if (this.env.model.getters.isReadonly() ||
54348
+ this.state.isResizing ||
54349
+ this.state.isMoving ||
54350
+ this.state.isSelecting) {
54350
54351
  return;
54351
54352
  }
54352
54353
  this._computeHandleDisplay(ev);
@@ -54399,6 +54400,10 @@ stores.inject(MyMetaStore, storeInstance);
54399
54400
  if (index < 0) {
54400
54401
  return;
54401
54402
  }
54403
+ if (this.env.model.getters.isReadonly()) {
54404
+ this._selectElement(index, false);
54405
+ return;
54406
+ }
54402
54407
  if (this.state.waitingForMove) {
54403
54408
  if (!this.env.model.getters.isGridSelectionActive()) {
54404
54409
  this._selectElement(index, false);
@@ -56105,24 +56110,24 @@ stores.inject(MyMetaStore, storeInstance);
56105
56110
  const MIN_SHEET_VIEW_WIDTH = 150;
56106
56111
  class SidePanelStore extends SpreadsheetStore {
56107
56112
  mutators = ["open", "toggle", "close", "changePanelSize", "resetPanelSize"];
56108
- initialPanelProps = {};
56113
+ currentPanelProps = {};
56109
56114
  componentTag = "";
56110
56115
  panelSize = DEFAULT_SIDE_PANEL_SIZE;
56111
56116
  get isOpen() {
56112
56117
  if (!this.componentTag) {
56113
56118
  return false;
56114
56119
  }
56115
- return this.computeState(this.componentTag, this.initialPanelProps).isOpen;
56120
+ return this.computeState(this.componentTag, this.currentPanelProps).isOpen;
56116
56121
  }
56117
56122
  get panelProps() {
56118
- const state = this.computeState(this.componentTag, this.initialPanelProps);
56123
+ const state = this.computeState(this.componentTag, this.currentPanelProps);
56119
56124
  if (state.isOpen) {
56120
56125
  return state.props ?? {};
56121
56126
  }
56122
56127
  return {};
56123
56128
  }
56124
56129
  get panelKey() {
56125
- const state = this.computeState(this.componentTag, this.initialPanelProps);
56130
+ const state = this.computeState(this.componentTag, this.currentPanelProps);
56126
56131
  if (state.isOpen) {
56127
56132
  return state.key;
56128
56133
  }
@@ -56134,10 +56139,10 @@ stores.inject(MyMetaStore, storeInstance);
56134
56139
  return;
56135
56140
  }
56136
56141
  if (this.isOpen && componentTag !== this.componentTag) {
56137
- this.initialPanelProps?.onCloseSidePanel?.();
56142
+ this.currentPanelProps?.onCloseSidePanel?.();
56138
56143
  }
56139
56144
  this.componentTag = componentTag;
56140
- this.initialPanelProps = state.props ?? {};
56145
+ this.currentPanelProps = state.props ?? {};
56141
56146
  }
56142
56147
  toggle(componentTag, panelProps) {
56143
56148
  if (this.isOpen && componentTag === this.componentTag) {
@@ -56148,8 +56153,8 @@ stores.inject(MyMetaStore, storeInstance);
56148
56153
  }
56149
56154
  }
56150
56155
  close() {
56151
- this.initialPanelProps.onCloseSidePanel?.();
56152
- this.initialPanelProps = {};
56156
+ this.currentPanelProps.onCloseSidePanel?.();
56157
+ this.currentPanelProps = {};
56153
56158
  this.componentTag = "";
56154
56159
  }
56155
56160
  changePanelSize(size, spreadsheetElWidth) {
@@ -56175,7 +56180,11 @@ stores.inject(MyMetaStore, storeInstance);
56175
56180
  };
56176
56181
  }
56177
56182
  else {
56178
- return customComputeState(this.getters, panelProps);
56183
+ const state = customComputeState(this.getters, panelProps);
56184
+ if (state.isOpen) {
56185
+ this.currentPanelProps = state.props ?? this.currentPanelProps;
56186
+ }
56187
+ return state;
56179
56188
  }
56180
56189
  }
56181
56190
  }
@@ -76343,7 +76352,7 @@ stores.inject(MyMetaStore, storeInstance);
76343
76352
  border-radius: 4px;
76344
76353
  font-weight: 500;
76345
76354
  font-size: 14px;
76346
- height: 32px;
76355
+ min-height: 32px;
76347
76356
  line-height: 16px;
76348
76357
  flex-grow: 1;
76349
76358
  background-color: ${BUTTON_BG};
@@ -81068,9 +81077,9 @@ stores.inject(MyMetaStore, storeInstance);
81068
81077
  exports.tokenize = tokenize;
81069
81078
 
81070
81079
 
81071
- __info__.version = "18.3.26";
81072
- __info__.date = "2025-11-12T14:15:33.133Z";
81073
- __info__.hash = "f31a752";
81080
+ __info__.version = "18.3.27";
81081
+ __info__.date = "2025-11-24T07:40:29.469Z";
81082
+ __info__.hash = "57b11b8";
81074
81083
 
81075
81084
 
81076
81085
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);