@odoo/o-spreadsheet 18.3.25 → 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.25
6
- * @date 2025-10-30T12:24:11.774Z
7
- * @hash def7778
5
+ * @version 18.3.27
6
+ * @date 2025-11-24T07:40:29.469Z
7
+ * @hash 57b11b8
8
8
  */
9
9
 
10
10
  'use strict';
@@ -6286,7 +6286,7 @@ function getRangeString(range, forSheetId, getSheetName, options = { useBoundedR
6286
6286
  let sheetName = "";
6287
6287
  if (prefixSheet) {
6288
6288
  if (range.invalidSheetName) {
6289
- sheetName = range.invalidSheetName;
6289
+ sheetName = getCanonicalSymbolName(range.invalidSheetName);
6290
6290
  }
6291
6291
  else {
6292
6292
  sheetName = getCanonicalSymbolName(getSheetName(range.sheetId));
@@ -17853,28 +17853,38 @@ function getTokenNextReferenceType(xc) {
17853
17853
  return xc;
17854
17854
  }
17855
17855
  /**
17856
- * Returns the given XC with the given reference type. The XC string should not contain a sheet name.
17856
+ * Returns the given XC with the given reference type.
17857
17857
  */
17858
17858
  function setXcToFixedReferenceType(xc, referenceType) {
17859
- if (xc.includes("!")) {
17860
- throw new Error("The given XC should not contain a sheet name");
17861
- }
17859
+ let sheetName;
17860
+ ({ sheetName, xc } = splitReference(xc));
17861
+ sheetName = sheetName ? sheetName + "!" : "";
17862
17862
  xc = xc.replace(/\$/g, "");
17863
- let indexOfNumber;
17863
+ const splitIndex = xc.indexOf(":");
17864
+ if (splitIndex >= 0) {
17865
+ return `${sheetName}${_setXcToFixedReferenceType(xc.slice(0, splitIndex), referenceType)}:${_setXcToFixedReferenceType(xc.slice(splitIndex + 1), referenceType)}`;
17866
+ }
17867
+ else {
17868
+ return sheetName + _setXcToFixedReferenceType(xc, referenceType);
17869
+ }
17870
+ }
17871
+ function _setXcToFixedReferenceType(xc, referenceType) {
17872
+ const indexOfNumber = xc.search(/[0-9]/);
17873
+ const hasCol = indexOfNumber !== 0;
17874
+ const hasRow = indexOfNumber >= 0;
17864
17875
  switch (referenceType) {
17865
17876
  case "col":
17877
+ if (!hasCol)
17878
+ return xc;
17866
17879
  return "$" + xc;
17867
17880
  case "row":
17868
- indexOfNumber = xc.search(/[0-9]/);
17881
+ if (!hasRow)
17882
+ return xc;
17869
17883
  return xc.slice(0, indexOfNumber) + "$" + xc.slice(indexOfNumber);
17870
17884
  case "colrow":
17871
- indexOfNumber = xc.search(/[0-9]/);
17872
- if (indexOfNumber === -1 || indexOfNumber === 0) {
17873
- // no row number (eg. A) or no column (eg. 1)
17885
+ if (!hasRow || !hasCol)
17874
17886
  return "$" + xc;
17875
- }
17876
- xc = xc.slice(0, indexOfNumber) + "$" + xc.slice(indexOfNumber);
17877
- return "$" + xc;
17887
+ return "$" + xc.slice(0, indexOfNumber) + "$" + xc.slice(indexOfNumber);
17878
17888
  case "none":
17879
17889
  return xc;
17880
17890
  }
@@ -22227,7 +22237,7 @@ let ScorecardChart$1 = class ScorecardChart extends AbstractChart {
22227
22237
  return {
22228
22238
  background: context.background,
22229
22239
  type: "scorecard",
22230
- keyValue: context.range ? context.range[0].dataRange : undefined,
22240
+ keyValue: context.range?.[0]?.dataRange,
22231
22241
  title: context.title || { text: "" },
22232
22242
  baselineMode: DEFAULT_SCORECARD_BASELINE_MODE,
22233
22243
  baselineColorUp: DEFAULT_SCORECARD_BASELINE_COLOR_UP,
@@ -22947,6 +22957,7 @@ class AbstractComposerStore extends SpreadsheetStore {
22947
22957
  this.highlightStore.register(this);
22948
22958
  this.onDispose(() => {
22949
22959
  this.highlightStore.unRegister(this);
22960
+ this._cancelEdition();
22950
22961
  });
22951
22962
  }
22952
22963
  handleEvent(event) {
@@ -22980,6 +22991,7 @@ class AbstractComposerStore extends SpreadsheetStore {
22980
22991
  }
22981
22992
  this.selectionStart = start;
22982
22993
  this.selectionEnd = end;
22994
+ this.editionMode = "editing";
22983
22995
  this.computeFormulaCursorContext();
22984
22996
  this.computeParenthesisRelatedToCursor();
22985
22997
  }
@@ -23717,7 +23729,6 @@ function insertTokenAfterArgSeparator(tokenAtCursor, value) {
23717
23729
  // replace the whole token
23718
23730
  start = tokenAtCursor.start;
23719
23731
  }
23720
- this.composer.stopComposerRangeSelection();
23721
23732
  this.composer.changeComposerCursorSelection(start, end);
23722
23733
  this.composer.replaceComposerCursorSelection(value);
23723
23734
  }
@@ -23735,7 +23746,6 @@ function insertTokenAfterLeftParenthesis(tokenAtCursor, value) {
23735
23746
  // replace the whole token
23736
23747
  start = tokenAtCursor.start;
23737
23748
  }
23738
- this.composer.stopComposerRangeSelection();
23739
23749
  this.composer.changeComposerCursorSelection(start, end);
23740
23750
  this.composer.replaceComposerCursorSelection(value);
23741
23751
  }
@@ -27578,7 +27588,7 @@ class GaugeChart extends AbstractChart {
27578
27588
  background: context.background,
27579
27589
  title: context.title || { text: "" },
27580
27590
  type: "gauge",
27581
- dataRange: context.range ? context.range[0].dataRange : undefined,
27591
+ dataRange: context.range?.[0]?.dataRange,
27582
27592
  sectionRule: {
27583
27593
  colors: {
27584
27594
  lowerColor: DEFAULT_GAUGE_LOWER_COLOR,
@@ -43876,7 +43886,6 @@ class Composer extends owl.Component {
43876
43886
  return;
43877
43887
  }
43878
43888
  const newSelection = this.contentHelper.getCurrentSelection();
43879
- this.props.composerStore.stopComposerRangeSelection();
43880
43889
  this.props.onComposerContentFocused();
43881
43890
  this.props.composerStore.changeComposerCursorSelection(newSelection.start, newSelection.end);
43882
43891
  this.processTokenAtCursor();
@@ -46970,6 +46979,7 @@ class DataValidationInput extends owl.Component {
46970
46979
  placeholder: this.placeholder,
46971
46980
  class: "o-sidePanel-composer",
46972
46981
  defaultRangeSheetId: this.env.model.getters.getActiveSheetId(),
46982
+ defaultStatic: true,
46973
46983
  };
46974
46984
  }
46975
46985
  get errorMessage() {
@@ -54335,7 +54345,10 @@ class AbstractResizer extends owl.Component {
54335
54345
  this.state.waitingForMove = false;
54336
54346
  }
54337
54347
  onMouseMove(ev) {
54338
- 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) {
54339
54352
  return;
54340
54353
  }
54341
54354
  this._computeHandleDisplay(ev);
@@ -54388,6 +54401,10 @@ class AbstractResizer extends owl.Component {
54388
54401
  if (index < 0) {
54389
54402
  return;
54390
54403
  }
54404
+ if (this.env.model.getters.isReadonly()) {
54405
+ this._selectElement(index, false);
54406
+ return;
54407
+ }
54391
54408
  if (this.state.waitingForMove) {
54392
54409
  if (!this.env.model.getters.isGridSelectionActive()) {
54393
54410
  this._selectElement(index, false);
@@ -56094,24 +56111,24 @@ const DEFAULT_SIDE_PANEL_SIZE = 350;
56094
56111
  const MIN_SHEET_VIEW_WIDTH = 150;
56095
56112
  class SidePanelStore extends SpreadsheetStore {
56096
56113
  mutators = ["open", "toggle", "close", "changePanelSize", "resetPanelSize"];
56097
- initialPanelProps = {};
56114
+ currentPanelProps = {};
56098
56115
  componentTag = "";
56099
56116
  panelSize = DEFAULT_SIDE_PANEL_SIZE;
56100
56117
  get isOpen() {
56101
56118
  if (!this.componentTag) {
56102
56119
  return false;
56103
56120
  }
56104
- return this.computeState(this.componentTag, this.initialPanelProps).isOpen;
56121
+ return this.computeState(this.componentTag, this.currentPanelProps).isOpen;
56105
56122
  }
56106
56123
  get panelProps() {
56107
- const state = this.computeState(this.componentTag, this.initialPanelProps);
56124
+ const state = this.computeState(this.componentTag, this.currentPanelProps);
56108
56125
  if (state.isOpen) {
56109
56126
  return state.props ?? {};
56110
56127
  }
56111
56128
  return {};
56112
56129
  }
56113
56130
  get panelKey() {
56114
- const state = this.computeState(this.componentTag, this.initialPanelProps);
56131
+ const state = this.computeState(this.componentTag, this.currentPanelProps);
56115
56132
  if (state.isOpen) {
56116
56133
  return state.key;
56117
56134
  }
@@ -56123,10 +56140,10 @@ class SidePanelStore extends SpreadsheetStore {
56123
56140
  return;
56124
56141
  }
56125
56142
  if (this.isOpen && componentTag !== this.componentTag) {
56126
- this.initialPanelProps?.onCloseSidePanel?.();
56143
+ this.currentPanelProps?.onCloseSidePanel?.();
56127
56144
  }
56128
56145
  this.componentTag = componentTag;
56129
- this.initialPanelProps = state.props ?? {};
56146
+ this.currentPanelProps = state.props ?? {};
56130
56147
  }
56131
56148
  toggle(componentTag, panelProps) {
56132
56149
  if (this.isOpen && componentTag === this.componentTag) {
@@ -56137,8 +56154,8 @@ class SidePanelStore extends SpreadsheetStore {
56137
56154
  }
56138
56155
  }
56139
56156
  close() {
56140
- this.initialPanelProps.onCloseSidePanel?.();
56141
- this.initialPanelProps = {};
56157
+ this.currentPanelProps.onCloseSidePanel?.();
56158
+ this.currentPanelProps = {};
56142
56159
  this.componentTag = "";
56143
56160
  }
56144
56161
  changePanelSize(size, spreadsheetElWidth) {
@@ -56164,7 +56181,11 @@ class SidePanelStore extends SpreadsheetStore {
56164
56181
  };
56165
56182
  }
56166
56183
  else {
56167
- 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;
56168
56189
  }
56169
56190
  }
56170
56191
  }
@@ -76332,7 +76353,7 @@ css /* scss */ `
76332
76353
  border-radius: 4px;
76333
76354
  font-weight: 500;
76334
76355
  font-size: 14px;
76335
- height: 32px;
76356
+ min-height: 32px;
76336
76357
  line-height: 16px;
76337
76358
  flex-grow: 1;
76338
76359
  background-color: ${BUTTON_BG};
@@ -81057,6 +81078,6 @@ exports.tokenColors = tokenColors;
81057
81078
  exports.tokenize = tokenize;
81058
81079
 
81059
81080
 
81060
- __info__.version = "18.3.25";
81061
- __info__.date = "2025-10-30T12:24:11.774Z";
81062
- __info__.hash = "def7778";
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.25
6
- * @date 2025-10-30T12:24:11.774Z
7
- * @hash def7778
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';
@@ -6284,7 +6284,7 @@ function getRangeString(range, forSheetId, getSheetName, options = { useBoundedR
6284
6284
  let sheetName = "";
6285
6285
  if (prefixSheet) {
6286
6286
  if (range.invalidSheetName) {
6287
- sheetName = range.invalidSheetName;
6287
+ sheetName = getCanonicalSymbolName(range.invalidSheetName);
6288
6288
  }
6289
6289
  else {
6290
6290
  sheetName = getCanonicalSymbolName(getSheetName(range.sheetId));
@@ -17851,28 +17851,38 @@ function getTokenNextReferenceType(xc) {
17851
17851
  return xc;
17852
17852
  }
17853
17853
  /**
17854
- * Returns the given XC with the given reference type. The XC string should not contain a sheet name.
17854
+ * Returns the given XC with the given reference type.
17855
17855
  */
17856
17856
  function setXcToFixedReferenceType(xc, referenceType) {
17857
- if (xc.includes("!")) {
17858
- throw new Error("The given XC should not contain a sheet name");
17859
- }
17857
+ let sheetName;
17858
+ ({ sheetName, xc } = splitReference(xc));
17859
+ sheetName = sheetName ? sheetName + "!" : "";
17860
17860
  xc = xc.replace(/\$/g, "");
17861
- let indexOfNumber;
17861
+ const splitIndex = xc.indexOf(":");
17862
+ if (splitIndex >= 0) {
17863
+ return `${sheetName}${_setXcToFixedReferenceType(xc.slice(0, splitIndex), referenceType)}:${_setXcToFixedReferenceType(xc.slice(splitIndex + 1), referenceType)}`;
17864
+ }
17865
+ else {
17866
+ return sheetName + _setXcToFixedReferenceType(xc, referenceType);
17867
+ }
17868
+ }
17869
+ function _setXcToFixedReferenceType(xc, referenceType) {
17870
+ const indexOfNumber = xc.search(/[0-9]/);
17871
+ const hasCol = indexOfNumber !== 0;
17872
+ const hasRow = indexOfNumber >= 0;
17862
17873
  switch (referenceType) {
17863
17874
  case "col":
17875
+ if (!hasCol)
17876
+ return xc;
17864
17877
  return "$" + xc;
17865
17878
  case "row":
17866
- indexOfNumber = xc.search(/[0-9]/);
17879
+ if (!hasRow)
17880
+ return xc;
17867
17881
  return xc.slice(0, indexOfNumber) + "$" + xc.slice(indexOfNumber);
17868
17882
  case "colrow":
17869
- indexOfNumber = xc.search(/[0-9]/);
17870
- if (indexOfNumber === -1 || indexOfNumber === 0) {
17871
- // no row number (eg. A) or no column (eg. 1)
17883
+ if (!hasRow || !hasCol)
17872
17884
  return "$" + xc;
17873
- }
17874
- xc = xc.slice(0, indexOfNumber) + "$" + xc.slice(indexOfNumber);
17875
- return "$" + xc;
17885
+ return "$" + xc.slice(0, indexOfNumber) + "$" + xc.slice(indexOfNumber);
17876
17886
  case "none":
17877
17887
  return xc;
17878
17888
  }
@@ -22225,7 +22235,7 @@ let ScorecardChart$1 = class ScorecardChart extends AbstractChart {
22225
22235
  return {
22226
22236
  background: context.background,
22227
22237
  type: "scorecard",
22228
- keyValue: context.range ? context.range[0].dataRange : undefined,
22238
+ keyValue: context.range?.[0]?.dataRange,
22229
22239
  title: context.title || { text: "" },
22230
22240
  baselineMode: DEFAULT_SCORECARD_BASELINE_MODE,
22231
22241
  baselineColorUp: DEFAULT_SCORECARD_BASELINE_COLOR_UP,
@@ -22945,6 +22955,7 @@ class AbstractComposerStore extends SpreadsheetStore {
22945
22955
  this.highlightStore.register(this);
22946
22956
  this.onDispose(() => {
22947
22957
  this.highlightStore.unRegister(this);
22958
+ this._cancelEdition();
22948
22959
  });
22949
22960
  }
22950
22961
  handleEvent(event) {
@@ -22978,6 +22989,7 @@ class AbstractComposerStore extends SpreadsheetStore {
22978
22989
  }
22979
22990
  this.selectionStart = start;
22980
22991
  this.selectionEnd = end;
22992
+ this.editionMode = "editing";
22981
22993
  this.computeFormulaCursorContext();
22982
22994
  this.computeParenthesisRelatedToCursor();
22983
22995
  }
@@ -23715,7 +23727,6 @@ function insertTokenAfterArgSeparator(tokenAtCursor, value) {
23715
23727
  // replace the whole token
23716
23728
  start = tokenAtCursor.start;
23717
23729
  }
23718
- this.composer.stopComposerRangeSelection();
23719
23730
  this.composer.changeComposerCursorSelection(start, end);
23720
23731
  this.composer.replaceComposerCursorSelection(value);
23721
23732
  }
@@ -23733,7 +23744,6 @@ function insertTokenAfterLeftParenthesis(tokenAtCursor, value) {
23733
23744
  // replace the whole token
23734
23745
  start = tokenAtCursor.start;
23735
23746
  }
23736
- this.composer.stopComposerRangeSelection();
23737
23747
  this.composer.changeComposerCursorSelection(start, end);
23738
23748
  this.composer.replaceComposerCursorSelection(value);
23739
23749
  }
@@ -27576,7 +27586,7 @@ class GaugeChart extends AbstractChart {
27576
27586
  background: context.background,
27577
27587
  title: context.title || { text: "" },
27578
27588
  type: "gauge",
27579
- dataRange: context.range ? context.range[0].dataRange : undefined,
27589
+ dataRange: context.range?.[0]?.dataRange,
27580
27590
  sectionRule: {
27581
27591
  colors: {
27582
27592
  lowerColor: DEFAULT_GAUGE_LOWER_COLOR,
@@ -43874,7 +43884,6 @@ class Composer extends Component {
43874
43884
  return;
43875
43885
  }
43876
43886
  const newSelection = this.contentHelper.getCurrentSelection();
43877
- this.props.composerStore.stopComposerRangeSelection();
43878
43887
  this.props.onComposerContentFocused();
43879
43888
  this.props.composerStore.changeComposerCursorSelection(newSelection.start, newSelection.end);
43880
43889
  this.processTokenAtCursor();
@@ -46968,6 +46977,7 @@ class DataValidationInput extends Component {
46968
46977
  placeholder: this.placeholder,
46969
46978
  class: "o-sidePanel-composer",
46970
46979
  defaultRangeSheetId: this.env.model.getters.getActiveSheetId(),
46980
+ defaultStatic: true,
46971
46981
  };
46972
46982
  }
46973
46983
  get errorMessage() {
@@ -54333,7 +54343,10 @@ class AbstractResizer extends Component {
54333
54343
  this.state.waitingForMove = false;
54334
54344
  }
54335
54345
  onMouseMove(ev) {
54336
- 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) {
54337
54350
  return;
54338
54351
  }
54339
54352
  this._computeHandleDisplay(ev);
@@ -54386,6 +54399,10 @@ class AbstractResizer extends Component {
54386
54399
  if (index < 0) {
54387
54400
  return;
54388
54401
  }
54402
+ if (this.env.model.getters.isReadonly()) {
54403
+ this._selectElement(index, false);
54404
+ return;
54405
+ }
54389
54406
  if (this.state.waitingForMove) {
54390
54407
  if (!this.env.model.getters.isGridSelectionActive()) {
54391
54408
  this._selectElement(index, false);
@@ -56092,24 +56109,24 @@ const DEFAULT_SIDE_PANEL_SIZE = 350;
56092
56109
  const MIN_SHEET_VIEW_WIDTH = 150;
56093
56110
  class SidePanelStore extends SpreadsheetStore {
56094
56111
  mutators = ["open", "toggle", "close", "changePanelSize", "resetPanelSize"];
56095
- initialPanelProps = {};
56112
+ currentPanelProps = {};
56096
56113
  componentTag = "";
56097
56114
  panelSize = DEFAULT_SIDE_PANEL_SIZE;
56098
56115
  get isOpen() {
56099
56116
  if (!this.componentTag) {
56100
56117
  return false;
56101
56118
  }
56102
- return this.computeState(this.componentTag, this.initialPanelProps).isOpen;
56119
+ return this.computeState(this.componentTag, this.currentPanelProps).isOpen;
56103
56120
  }
56104
56121
  get panelProps() {
56105
- const state = this.computeState(this.componentTag, this.initialPanelProps);
56122
+ const state = this.computeState(this.componentTag, this.currentPanelProps);
56106
56123
  if (state.isOpen) {
56107
56124
  return state.props ?? {};
56108
56125
  }
56109
56126
  return {};
56110
56127
  }
56111
56128
  get panelKey() {
56112
- const state = this.computeState(this.componentTag, this.initialPanelProps);
56129
+ const state = this.computeState(this.componentTag, this.currentPanelProps);
56113
56130
  if (state.isOpen) {
56114
56131
  return state.key;
56115
56132
  }
@@ -56121,10 +56138,10 @@ class SidePanelStore extends SpreadsheetStore {
56121
56138
  return;
56122
56139
  }
56123
56140
  if (this.isOpen && componentTag !== this.componentTag) {
56124
- this.initialPanelProps?.onCloseSidePanel?.();
56141
+ this.currentPanelProps?.onCloseSidePanel?.();
56125
56142
  }
56126
56143
  this.componentTag = componentTag;
56127
- this.initialPanelProps = state.props ?? {};
56144
+ this.currentPanelProps = state.props ?? {};
56128
56145
  }
56129
56146
  toggle(componentTag, panelProps) {
56130
56147
  if (this.isOpen && componentTag === this.componentTag) {
@@ -56135,8 +56152,8 @@ class SidePanelStore extends SpreadsheetStore {
56135
56152
  }
56136
56153
  }
56137
56154
  close() {
56138
- this.initialPanelProps.onCloseSidePanel?.();
56139
- this.initialPanelProps = {};
56155
+ this.currentPanelProps.onCloseSidePanel?.();
56156
+ this.currentPanelProps = {};
56140
56157
  this.componentTag = "";
56141
56158
  }
56142
56159
  changePanelSize(size, spreadsheetElWidth) {
@@ -56162,7 +56179,11 @@ class SidePanelStore extends SpreadsheetStore {
56162
56179
  };
56163
56180
  }
56164
56181
  else {
56165
- 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;
56166
56187
  }
56167
56188
  }
56168
56189
  }
@@ -76330,7 +76351,7 @@ css /* scss */ `
76330
76351
  border-radius: 4px;
76331
76352
  font-weight: 500;
76332
76353
  font-size: 14px;
76333
- height: 32px;
76354
+ min-height: 32px;
76334
76355
  line-height: 16px;
76335
76356
  flex-grow: 1;
76336
76357
  background-color: ${BUTTON_BG};
@@ -81009,6 +81030,6 @@ const chartHelpers = { ...CHART_HELPERS, ...CHART_RUNTIME_HELPERS };
81009
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 };
81010
81031
 
81011
81032
 
81012
- __info__.version = "18.3.25";
81013
- __info__.date = "2025-10-30T12:24:11.774Z";
81014
- __info__.hash = "def7778";
81033
+ __info__.version = "18.3.27";
81034
+ __info__.date = "2025-11-24T07:40:29.469Z";
81035
+ __info__.hash = "57b11b8";