handsontable 0.0.0-next-cd84c73-20241112 → 0.0.0-next-3d4891a-20241114

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

@@ -637,6 +637,7 @@ class Table {
637
637
  const borderBoxSizing = this.wot.stylesHandler.areCellsBorderBox();
638
638
  const rowHeightFn = borderBoxSizing ? _element.outerHeight : _element.innerHeight;
639
639
  const borderCompensation = borderBoxSizing ? 0 : 1;
640
+ const firstRowBorderCompensation = borderBoxSizing ? 1 : 0;
640
641
  let previousRowHeight;
641
642
  let rowCurrentHeight;
642
643
  let sourceRowIndex;
@@ -652,12 +653,13 @@ class Table {
652
653
  previousRowHeight = this.getRowHeight(sourceRowIndex);
653
654
  currentTr = this.getTrForRow(sourceRowIndex);
654
655
  rowHeader = currentTr.querySelector('th');
656
+ const topBorderCompensation = sourceRowIndex === 0 ? firstRowBorderCompensation : 0;
655
657
  if (rowHeader) {
656
658
  rowCurrentHeight = rowHeightFn(rowHeader);
657
659
  } else {
658
660
  rowCurrentHeight = rowHeightFn(currentTr) - borderCompensation;
659
661
  }
660
- if (!previousRowHeight && this.dataAccessObject.stylesHandler.getDefaultRowHeight() < rowCurrentHeight || previousRowHeight < rowCurrentHeight) {
662
+ if (!previousRowHeight && this.dataAccessObject.stylesHandler.getDefaultRowHeight() < rowCurrentHeight - topBorderCompensation || previousRowHeight < rowCurrentHeight) {
661
663
  if (!borderBoxSizing) {
662
664
  rowCurrentHeight += 1;
663
665
  }
@@ -633,6 +633,7 @@ class Table {
633
633
  const borderBoxSizing = this.wot.stylesHandler.areCellsBorderBox();
634
634
  const rowHeightFn = borderBoxSizing ? outerHeight : innerHeight;
635
635
  const borderCompensation = borderBoxSizing ? 0 : 1;
636
+ const firstRowBorderCompensation = borderBoxSizing ? 1 : 0;
636
637
  let previousRowHeight;
637
638
  let rowCurrentHeight;
638
639
  let sourceRowIndex;
@@ -648,12 +649,13 @@ class Table {
648
649
  previousRowHeight = this.getRowHeight(sourceRowIndex);
649
650
  currentTr = this.getTrForRow(sourceRowIndex);
650
651
  rowHeader = currentTr.querySelector('th');
652
+ const topBorderCompensation = sourceRowIndex === 0 ? firstRowBorderCompensation : 0;
651
653
  if (rowHeader) {
652
654
  rowCurrentHeight = rowHeightFn(rowHeader);
653
655
  } else {
654
656
  rowCurrentHeight = rowHeightFn(currentTr) - borderCompensation;
655
657
  }
656
- if (!previousRowHeight && this.dataAccessObject.stylesHandler.getDefaultRowHeight() < rowCurrentHeight || previousRowHeight < rowCurrentHeight) {
658
+ if (!previousRowHeight && this.dataAccessObject.stylesHandler.getDefaultRowHeight() < rowCurrentHeight - topBorderCompensation || previousRowHeight < rowCurrentHeight) {
657
659
  if (!borderBoxSizing) {
658
660
  rowCurrentHeight += 1;
659
661
  }
@@ -33,7 +33,9 @@ class StylesHandler {
33
33
  */
34
34
  constructor(domBindings) {
35
35
  /**
36
- * Applies the necessary class names to the root element.
36
+ * Calculates the row height based on the current theme and CSS variables.
37
+ *
38
+ * @returns {number|null} The calculated row height, or `null` if any required CSS variable is not found.
37
39
  */
38
40
  _classPrivateMethodInitSpec(this, _StylesHandler_brand);
39
41
  /**
@@ -135,15 +137,15 @@ class StylesHandler {
135
137
  if (_classPrivateFieldGet(_isClassicTheme, this)) {
136
138
  return CLASSIC_THEME_DEFAULT_HEIGHT;
137
139
  }
138
- const cssVarRowHeightValue = this.getCSSVariableValue('row-height');
139
- if (!cssVarRowHeightValue) {
140
- (0, _console.warn)(`The "${_classPrivateFieldGet(_themeName, this)}" theme is enabled, but its stylesheets are missing. \
140
+ const calculatedRowHeight = _assertClassBrand(_StylesHandler_brand, this, _calculateRowHeight).call(this);
141
+ if (!calculatedRowHeight) {
142
+ (0, _console.warn)(`The "${_classPrivateFieldGet(_themeName, this)}" theme is enabled, but its stylesheets are missing or not imported correctly. \
141
143
  Import the correct CSS files in order to use that theme.`);
142
144
  _classPrivateFieldSet(_isClassicTheme, this, true);
143
145
  this.useTheme();
144
146
  return CLASSIC_THEME_DEFAULT_HEIGHT;
145
147
  }
146
- return cssVarRowHeightValue;
148
+ return calculatedRowHeight;
147
149
  }
148
150
 
149
151
  /**
@@ -197,6 +199,18 @@ Import the correct CSS files in order to use that theme.`);
197
199
  }
198
200
  }
199
201
  exports.StylesHandler = StylesHandler;
202
+ function _calculateRowHeight() {
203
+ const lineHeightVarValue = this.getCSSVariableValue('line-height');
204
+ const verticalPaddingVarValue = this.getCSSVariableValue('cell-vertical-padding');
205
+ const bottomBorderWidth = Math.ceil(parseFloat(this.getStyleForTD('border-bottom-width')));
206
+ if (lineHeightVarValue === null || verticalPaddingVarValue === null || isNaN(bottomBorderWidth)) {
207
+ return null;
208
+ }
209
+ return lineHeightVarValue + 2 * verticalPaddingVarValue + bottomBorderWidth;
210
+ }
211
+ /**
212
+ * Applies the necessary class names to the root element.
213
+ */
200
214
  function _applyClassNames() {
201
215
  (0, _element.removeClass)(_classPrivateFieldGet(_rootElement, this), /ht-theme-.*/g);
202
216
  (0, _element.addClass)(_classPrivateFieldGet(_rootElement, this), _classPrivateFieldGet(_themeName, this));
@@ -208,11 +222,12 @@ function _cacheStylesheetValues() {
208
222
  if (!this.isClassicTheme()) {
209
223
  _classPrivateFieldSet(_rootComputedStyle, this, getComputedStyle(_classPrivateFieldGet(_rootElement, this)));
210
224
  }
211
- const stylesForTD = _assertClassBrand(_StylesHandler_brand, this, _getStylesForTD).call(this, ['box-sizing']);
225
+ const stylesForTD = _assertClassBrand(_StylesHandler_brand, this, _getStylesForTD).call(this, ['box-sizing', 'border-bottom-width']);
212
226
  _classPrivateFieldGet(_computedStyles, this).td = {
213
227
  ..._classPrivateFieldGet(_computedStyles, this).td,
214
228
  ...{
215
- 'box-sizing': stylesForTD['box-sizing']
229
+ 'box-sizing': stylesForTD['box-sizing'],
230
+ 'border-bottom-width': stylesForTD['border-bottom-width']
216
231
  }
217
232
  };
218
233
  }
@@ -259,7 +274,7 @@ function _getParsedCSSValue(property) {
259
274
  if (_classPrivateFieldGet(_isClassicTheme, this)) {
260
275
  return null;
261
276
  }
262
- const parsedValue = parseInt(_classPrivateFieldGet(_rootComputedStyle, this).getPropertyValue(property), 10);
277
+ const parsedValue = Math.ceil(parseFloat(_classPrivateFieldGet(_rootComputedStyle, this).getPropertyValue(property)));
263
278
  return Number.isNaN(parsedValue) ? null : parsedValue;
264
279
  }
265
280
  /**
@@ -30,7 +30,9 @@ export class StylesHandler {
30
30
  */
31
31
  constructor(domBindings) {
32
32
  /**
33
- * Applies the necessary class names to the root element.
33
+ * Calculates the row height based on the current theme and CSS variables.
34
+ *
35
+ * @returns {number|null} The calculated row height, or `null` if any required CSS variable is not found.
34
36
  */
35
37
  _classPrivateMethodInitSpec(this, _StylesHandler_brand);
36
38
  /**
@@ -132,15 +134,15 @@ export class StylesHandler {
132
134
  if (_classPrivateFieldGet(_isClassicTheme, this)) {
133
135
  return CLASSIC_THEME_DEFAULT_HEIGHT;
134
136
  }
135
- const cssVarRowHeightValue = this.getCSSVariableValue('row-height');
136
- if (!cssVarRowHeightValue) {
137
- warn(`The "${_classPrivateFieldGet(_themeName, this)}" theme is enabled, but its stylesheets are missing. \
137
+ const calculatedRowHeight = _assertClassBrand(_StylesHandler_brand, this, _calculateRowHeight).call(this);
138
+ if (!calculatedRowHeight) {
139
+ warn(`The "${_classPrivateFieldGet(_themeName, this)}" theme is enabled, but its stylesheets are missing or not imported correctly. \
138
140
  Import the correct CSS files in order to use that theme.`);
139
141
  _classPrivateFieldSet(_isClassicTheme, this, true);
140
142
  this.useTheme();
141
143
  return CLASSIC_THEME_DEFAULT_HEIGHT;
142
144
  }
143
- return cssVarRowHeightValue;
145
+ return calculatedRowHeight;
144
146
  }
145
147
 
146
148
  /**
@@ -193,6 +195,18 @@ Import the correct CSS files in order to use that theme.`);
193
195
  }
194
196
  }
195
197
  }
198
+ function _calculateRowHeight() {
199
+ const lineHeightVarValue = this.getCSSVariableValue('line-height');
200
+ const verticalPaddingVarValue = this.getCSSVariableValue('cell-vertical-padding');
201
+ const bottomBorderWidth = Math.ceil(parseFloat(this.getStyleForTD('border-bottom-width')));
202
+ if (lineHeightVarValue === null || verticalPaddingVarValue === null || isNaN(bottomBorderWidth)) {
203
+ return null;
204
+ }
205
+ return lineHeightVarValue + 2 * verticalPaddingVarValue + bottomBorderWidth;
206
+ }
207
+ /**
208
+ * Applies the necessary class names to the root element.
209
+ */
196
210
  function _applyClassNames() {
197
211
  removeClass(_classPrivateFieldGet(_rootElement, this), /ht-theme-.*/g);
198
212
  addClass(_classPrivateFieldGet(_rootElement, this), _classPrivateFieldGet(_themeName, this));
@@ -204,11 +218,12 @@ function _cacheStylesheetValues() {
204
218
  if (!this.isClassicTheme()) {
205
219
  _classPrivateFieldSet(_rootComputedStyle, this, getComputedStyle(_classPrivateFieldGet(_rootElement, this)));
206
220
  }
207
- const stylesForTD = _assertClassBrand(_StylesHandler_brand, this, _getStylesForTD).call(this, ['box-sizing']);
221
+ const stylesForTD = _assertClassBrand(_StylesHandler_brand, this, _getStylesForTD).call(this, ['box-sizing', 'border-bottom-width']);
208
222
  _classPrivateFieldGet(_computedStyles, this).td = {
209
223
  ..._classPrivateFieldGet(_computedStyles, this).td,
210
224
  ...{
211
- 'box-sizing': stylesForTD['box-sizing']
225
+ 'box-sizing': stylesForTD['box-sizing'],
226
+ 'border-bottom-width': stylesForTD['border-bottom-width']
212
227
  }
213
228
  };
214
229
  }
@@ -255,7 +270,7 @@ function _getParsedCSSValue(property) {
255
270
  if (_classPrivateFieldGet(_isClassicTheme, this)) {
256
271
  return null;
257
272
  }
258
- const parsedValue = parseInt(_classPrivateFieldGet(_rootComputedStyle, this).getPropertyValue(property), 10);
273
+ const parsedValue = Math.ceil(parseFloat(_classPrivateFieldGet(_rootComputedStyle, this).getPropertyValue(property)));
259
274
  return Number.isNaN(parsedValue) ? null : parsedValue;
260
275
  }
261
276
  /**
package/base.js CHANGED
@@ -45,8 +45,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
45
45
  Handsontable.CellCoords = _src.CellCoords;
46
46
  Handsontable.CellRange = _src.CellRange;
47
47
  Handsontable.packageName = 'handsontable';
48
- Handsontable.buildDate = "12/11/2024 13:57:40";
49
- Handsontable.version = "0.0.0-next-cd84c73-20241112";
48
+ Handsontable.buildDate = "14/11/2024 12:11:26";
49
+ Handsontable.version = "0.0.0-next-3d4891a-20241114";
50
50
  Handsontable.languages = {
51
51
  dictionaryKeys: _registry.dictionaryKeys,
52
52
  getLanguageDictionary: _registry.getLanguageDictionary,
package/base.mjs CHANGED
@@ -35,8 +35,8 @@ Handsontable.hooks = Hooks.getSingleton();
35
35
  Handsontable.CellCoords = CellCoords;
36
36
  Handsontable.CellRange = CellRange;
37
37
  Handsontable.packageName = 'handsontable';
38
- Handsontable.buildDate = "12/11/2024 13:57:46";
39
- Handsontable.version = "0.0.0-next-cd84c73-20241112";
38
+ Handsontable.buildDate = "14/11/2024 12:11:31";
39
+ Handsontable.version = "0.0.0-next-3d4891a-20241114";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys,
42
42
  getLanguageDictionary,
@@ -3842,7 +3842,7 @@ var _default = () => {
3842
3842
  /**
3843
3843
  * The `rowHeights` option sets rows' heights, in pixels.
3844
3844
  *
3845
- * In the rendering process, the default row height is 23 px (in the classic theme: 22 px + 1 px of the row's bottom border) or what's defined as `--ht-row-height` in the used theme.
3845
+ * In the rendering process, the default row height is 23 px (in the classic theme: 22 px + 1 px of the row's bottom border) or whatever is defined in the used theme (based on the line height, vertical padding and cell borders).
3846
3846
  * You can change it to equal or greater than the defautl value, by setting the `rowHeights` option to one of the following:
3847
3847
  *
3848
3848
  * | Setting | Description | Example |
@@ -3839,7 +3839,7 @@ export default () => {
3839
3839
  /**
3840
3840
  * The `rowHeights` option sets rows' heights, in pixels.
3841
3841
  *
3842
- * In the rendering process, the default row height is 23 px (in the classic theme: 22 px + 1 px of the row's bottom border) or what's defined as `--ht-row-height` in the used theme.
3842
+ * In the rendering process, the default row height is 23 px (in the classic theme: 22 px + 1 px of the row's bottom border) or whatever is defined in the used theme (based on the line height, vertical padding and cell borders).
3843
3843
  * You can change it to equal or greater than the defautl value, by setting the `rowHeights` option to one of the following:
3844
3844
  *
3845
3845
  * | Setting | Description | Example |
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 0.0.0-next-cd84c73-20241112
29
- * Release date: 17/10/2024 (built at 12/11/2024 13:58:09)
28
+ * Version: 0.0.0-next-3d4891a-20241114
29
+ * Release date: 17/10/2024 (built at 14/11/2024 12:11:54)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 0.0.0-next-cd84c73-20241112
29
- * Release date: 17/10/2024 (built at 12/11/2024 13:58:09)
28
+ * Version: 0.0.0-next-3d4891a-20241114
29
+ * Release date: 17/10/2024 (built at 14/11/2024 12:11:54)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 0.0.0-next-cd84c73-20241112
29
- * Release date: 17/10/2024 (built at 12/11/2024 13:57:50)
28
+ * Version: 0.0.0-next-3d4891a-20241114
29
+ * Release date: 17/10/2024 (built at 14/11/2024 12:11:36)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -42676,8 +42676,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
42676
42676
  Handsontable.CellCoords = _src.CellCoords;
42677
42677
  Handsontable.CellRange = _src.CellRange;
42678
42678
  Handsontable.packageName = 'handsontable';
42679
- Handsontable.buildDate = "12/11/2024 13:57:50";
42680
- Handsontable.version = "0.0.0-next-cd84c73-20241112";
42679
+ Handsontable.buildDate = "14/11/2024 12:11:36";
42680
+ Handsontable.version = "0.0.0-next-3d4891a-20241114";
42681
42681
  Handsontable.languages = {
42682
42682
  dictionaryKeys: _registry.dictionaryKeys,
42683
42683
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -54203,7 +54203,7 @@ const domMessages = {
54203
54203
  function _injectProductInfo(key, element) {
54204
54204
  const hasValidType = !isEmpty(key);
54205
54205
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
54206
- const hotVersion = "0.0.0-next-cd84c73-20241112";
54206
+ const hotVersion = "0.0.0-next-3d4891a-20241114";
54207
54207
  let keyValidityDate;
54208
54208
  let consoleMessageState = 'invalid';
54209
54209
  let domMessageState = 'invalid';
@@ -74863,6 +74863,7 @@ class Table {
74863
74863
  const borderBoxSizing = this.wot.stylesHandler.areCellsBorderBox();
74864
74864
  const rowHeightFn = borderBoxSizing ? _element.outerHeight : _element.innerHeight;
74865
74865
  const borderCompensation = borderBoxSizing ? 0 : 1;
74866
+ const firstRowBorderCompensation = borderBoxSizing ? 1 : 0;
74866
74867
  let previousRowHeight;
74867
74868
  let rowCurrentHeight;
74868
74869
  let sourceRowIndex;
@@ -74878,12 +74879,13 @@ class Table {
74878
74879
  previousRowHeight = this.getRowHeight(sourceRowIndex);
74879
74880
  currentTr = this.getTrForRow(sourceRowIndex);
74880
74881
  rowHeader = currentTr.querySelector('th');
74882
+ const topBorderCompensation = sourceRowIndex === 0 ? firstRowBorderCompensation : 0;
74881
74883
  if (rowHeader) {
74882
74884
  rowCurrentHeight = rowHeightFn(rowHeader);
74883
74885
  } else {
74884
74886
  rowCurrentHeight = rowHeightFn(currentTr) - borderCompensation;
74885
74887
  }
74886
- if (!previousRowHeight && this.dataAccessObject.stylesHandler.getDefaultRowHeight() < rowCurrentHeight || previousRowHeight < rowCurrentHeight) {
74888
+ if (!previousRowHeight && this.dataAccessObject.stylesHandler.getDefaultRowHeight() < rowCurrentHeight - topBorderCompensation || previousRowHeight < rowCurrentHeight) {
74887
74889
  if (!borderBoxSizing) {
74888
74890
  rowCurrentHeight += 1;
74889
74891
  }
@@ -82738,7 +82740,9 @@ class StylesHandler {
82738
82740
  */
82739
82741
  constructor(domBindings) {
82740
82742
  /**
82741
- * Applies the necessary class names to the root element.
82743
+ * Calculates the row height based on the current theme and CSS variables.
82744
+ *
82745
+ * @returns {number|null} The calculated row height, or `null` if any required CSS variable is not found.
82742
82746
  */
82743
82747
  _classPrivateMethodInitSpec(this, _StylesHandler_brand);
82744
82748
  /**
@@ -82840,15 +82844,15 @@ class StylesHandler {
82840
82844
  if (_classPrivateFieldGet(_isClassicTheme, this)) {
82841
82845
  return CLASSIC_THEME_DEFAULT_HEIGHT;
82842
82846
  }
82843
- const cssVarRowHeightValue = this.getCSSVariableValue('row-height');
82844
- if (!cssVarRowHeightValue) {
82845
- (0, _console.warn)(`The "${_classPrivateFieldGet(_themeName, this)}" theme is enabled, but its stylesheets are missing. \
82847
+ const calculatedRowHeight = _assertClassBrand(_StylesHandler_brand, this, _calculateRowHeight).call(this);
82848
+ if (!calculatedRowHeight) {
82849
+ (0, _console.warn)(`The "${_classPrivateFieldGet(_themeName, this)}" theme is enabled, but its stylesheets are missing or not imported correctly. \
82846
82850
  Import the correct CSS files in order to use that theme.`);
82847
82851
  _classPrivateFieldSet(_isClassicTheme, this, true);
82848
82852
  this.useTheme();
82849
82853
  return CLASSIC_THEME_DEFAULT_HEIGHT;
82850
82854
  }
82851
- return cssVarRowHeightValue;
82855
+ return calculatedRowHeight;
82852
82856
  }
82853
82857
 
82854
82858
  /**
@@ -82902,6 +82906,18 @@ Import the correct CSS files in order to use that theme.`);
82902
82906
  }
82903
82907
  }
82904
82908
  exports.StylesHandler = StylesHandler;
82909
+ function _calculateRowHeight() {
82910
+ const lineHeightVarValue = this.getCSSVariableValue('line-height');
82911
+ const verticalPaddingVarValue = this.getCSSVariableValue('cell-vertical-padding');
82912
+ const bottomBorderWidth = Math.ceil(parseFloat(this.getStyleForTD('border-bottom-width')));
82913
+ if (lineHeightVarValue === null || verticalPaddingVarValue === null || isNaN(bottomBorderWidth)) {
82914
+ return null;
82915
+ }
82916
+ return lineHeightVarValue + 2 * verticalPaddingVarValue + bottomBorderWidth;
82917
+ }
82918
+ /**
82919
+ * Applies the necessary class names to the root element.
82920
+ */
82905
82921
  function _applyClassNames() {
82906
82922
  (0, _element.removeClass)(_classPrivateFieldGet(_rootElement, this), /ht-theme-.*/g);
82907
82923
  (0, _element.addClass)(_classPrivateFieldGet(_rootElement, this), _classPrivateFieldGet(_themeName, this));
@@ -82913,11 +82929,12 @@ function _cacheStylesheetValues() {
82913
82929
  if (!this.isClassicTheme()) {
82914
82930
  _classPrivateFieldSet(_rootComputedStyle, this, getComputedStyle(_classPrivateFieldGet(_rootElement, this)));
82915
82931
  }
82916
- const stylesForTD = _assertClassBrand(_StylesHandler_brand, this, _getStylesForTD).call(this, ['box-sizing']);
82932
+ const stylesForTD = _assertClassBrand(_StylesHandler_brand, this, _getStylesForTD).call(this, ['box-sizing', 'border-bottom-width']);
82917
82933
  _classPrivateFieldGet(_computedStyles, this).td = {
82918
82934
  ..._classPrivateFieldGet(_computedStyles, this).td,
82919
82935
  ...{
82920
- 'box-sizing': stylesForTD['box-sizing']
82936
+ 'box-sizing': stylesForTD['box-sizing'],
82937
+ 'border-bottom-width': stylesForTD['border-bottom-width']
82921
82938
  }
82922
82939
  };
82923
82940
  }
@@ -82964,7 +82981,7 @@ function _getParsedCSSValue(property) {
82964
82981
  if (_classPrivateFieldGet(_isClassicTheme, this)) {
82965
82982
  return null;
82966
82983
  }
82967
- const parsedValue = parseInt(_classPrivateFieldGet(_rootComputedStyle, this).getPropertyValue(property), 10);
82984
+ const parsedValue = Math.ceil(parseFloat(_classPrivateFieldGet(_rootComputedStyle, this).getPropertyValue(property)));
82968
82985
  return Number.isNaN(parsedValue) ? null : parsedValue;
82969
82986
  }
82970
82987
  /**
@@ -94887,7 +94904,7 @@ var _default = () => {
94887
94904
  /**
94888
94905
  * The `rowHeights` option sets rows' heights, in pixels.
94889
94906
  *
94890
- * In the rendering process, the default row height is 23 px (in the classic theme: 22 px + 1 px of the row's bottom border) or what's defined as `--ht-row-height` in the used theme.
94907
+ * In the rendering process, the default row height is 23 px (in the classic theme: 22 px + 1 px of the row's bottom border) or whatever is defined in the used theme (based on the line height, vertical padding and cell borders).
94891
94908
  * You can change it to equal or greater than the defautl value, by setting the `rowHeights` option to one of the following:
94892
94909
  *
94893
94910
  * | Setting | Description | Example |
@@ -26,8 +26,8 @@
26
26
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
27
27
  * USE OR INABILITY TO USE THIS SOFTWARE.
28
28
  *
29
- * Version: 0.0.0-next-cd84c73-20241112
30
- * Release date: 17/10/2024 (built at 12/11/2024 13:58:44)
29
+ * Version: 0.0.0-next-3d4891a-20241114
30
+ * Release date: 17/10/2024 (built at 14/11/2024 12:12:28)
31
31
  */.handsontable .table td,.handsontable .table th{border-top:none}.handsontable tr{background:#fff}.handsontable td{background-color:inherit}.handsontable .table caption+thead tr:first-child td,.handsontable .table caption+thead tr:first-child th,.handsontable .table colgroup+thead tr:first-child td,.handsontable .table colgroup+thead tr:first-child th,.handsontable .table thead:first-child tr:first-child td,.handsontable .table thead:first-child tr:first-child th{border-top:1px solid #ccc}.handsontable .table-bordered{border:0;border-collapse:separate}.handsontable .table-bordered td,.handsontable .table-bordered th{border-left:none}.handsontable .table-bordered td:first-child,.handsontable .table-bordered th:first-child{border-left:1px solid #ccc}.handsontable .table>tbody>tr>td,.handsontable .table>tbody>tr>th,.handsontable .table>tfoot>tr>td,.handsontable .table>tfoot>tr>th,.handsontable .table>thead>tr>td,.handsontable .table>thead>tr>th{line-height:21px;padding:0}.col-lg-1.handsontable,.col-lg-10.handsontable,.col-lg-11.handsontable,.col-lg-12.handsontable,.col-lg-2.handsontable,.col-lg-3.handsontable,.col-lg-4.handsontable,.col-lg-5.handsontable,.col-lg-6.handsontable,.col-lg-7.handsontable,.col-lg-8.handsontable,.col-lg-9.handsontable,.col-md-1.handsontable,.col-md-10.handsontable,.col-md-11.handsontable,.col-md-12.handsontable,.col-md-2.handsontable,.col-md-3.handsontable,.col-md-4.handsontable,.col-md-5.handsontable,.col-md-6.handsontable,.col-md-7.handsontable,.col-md-8.handsontable,.col-md-9.handsontable .col-sm-1.handsontable,.col-sm-10.handsontable,.col-sm-11.handsontable,.col-sm-12.handsontable,.col-sm-2.handsontable,.col-sm-3.handsontable,.col-sm-4.handsontable,.col-sm-5.handsontable,.col-sm-6.handsontable,.col-sm-7.handsontable,.col-sm-8.handsontable,.col-sm-9.handsontable .col-xs-1.handsontable,.col-xs-10.handsontable,.col-xs-11.handsontable,.col-xs-12.handsontable,.col-xs-2.handsontable,.col-xs-3.handsontable,.col-xs-4.handsontable,.col-xs-5.handsontable,.col-xs-6.handsontable,.col-xs-7.handsontable,.col-xs-8.handsontable,.col-xs-9.handsontable{padding-left:0;padding-right:0}.handsontable .table-striped>tbody>tr:nth-of-type(2n){background-color:#fff}.handsontable{position:relative}.handsontable .hide{display:none}.handsontable .relative{position:relative}.handsontable .wtHider{width:0}.handsontable .wtSpreader{height:auto;position:relative;width:0}.handsontable div,.handsontable input,.handsontable table,.handsontable tbody,.handsontable td,.handsontable textarea,.handsontable th,.handsontable thead{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.handsontable input,.handsontable textarea{min-height:auto}.handsontable table.htCore{border-collapse:separate;border-spacing:0;border-width:0;cursor:default;margin:0;max-height:none;max-width:none;outline-width:0;table-layout:fixed;width:0}.handsontable col,.handsontable col.rowHeader{width:50px}.handsontable td,.handsontable th{background-color:#fff;border-bottom:1px solid #ccc;border-left-width:0;border-right:1px solid #ccc;border-top-width:0;empty-cells:show;height:22px;line-height:21px;outline:none;outline-width:0;overflow:hidden;padding:0 4px;vertical-align:top;white-space:pre-wrap}[dir=rtl].handsontable td,[dir=rtl].handsontable th{border-left:1px solid #ccc;border-right-width:0}.handsontable th:last-child{border-bottom:1px solid #ccc;border-left:none;border-right:1px solid #ccc}[dir=rtl].handsontable th:last-child{border-left:1px solid #ccc;border-right:none}.handsontable td:first-of-type,.handsontable th:first-child{border-left:1px solid #ccc}[dir=rtl].handsontable td:first-of-type,[dir=rtl].handsontable th:first-child{border-right:1px solid #ccc}.handsontable .ht_clone_top th:nth-child(2){border-left-width:0;border-right:1px solid #ccc}[dir=rtl].handsontable .ht_clone_top th:nth-child(2){border-left:1px solid #ccc;border-right-width:0}.handsontable.htRowHeaders thead tr th:nth-child(2){border-left:1px solid #ccc}[dir=rtl].handsontable.htRowHeaders thead tr th:nth-child(2){border-right:1px solid #ccc}.handsontable tr:first-child td,.handsontable tr:first-child th{border-top:1px solid #ccc}.ht_master:not(.innerBorderInlineStart):not(.emptyColumns) tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.htGhostTable) tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top):not(.htGhostTable) thead tr th:first-child{border-left:1px solid #ccc;border-right-width:0}[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns) tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.htGhostTable) tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top):not(.htGhostTable) thead tr th:first-child{border-left-width:0;border-right:1px solid #ccc}.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr:last-child th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr:last-child th{border-bottom-width:0}.handsontable th{background-color:#f0f0f0;color:#222;font-weight:400;text-align:center;white-space:nowrap}.handsontable thead th{padding:0}.handsontable th.active{background-color:#ccc}.handsontable thead th .relative{padding:2px 4px}.handsontable span.colHeader{display:inline-block;line-height:1.1}.handsontable .wtBorder{font-size:0;position:absolute}.handsontable .wtBorder.hidden{display:none!important}.handsontable .wtBorder.current{z-index:10}.handsontable .wtBorder.area{z-index:8}.handsontable .wtBorder.fill{z-index:6}.handsontable .wtBorder.corner{cursor:crosshair;font-size:0}.ht_clone_master{z-index:100}.ht_clone_inline_start{z-index:120}.ht_clone_bottom{z-index:130}.ht_clone_bottom_inline_start_corner{z-index:150}.ht_clone_top{z-index:160}.ht_clone_top_inline_start_corner{z-index:180}.handsontable col.hidden{width:0!important}.handsontable tr.hidden,.handsontable tr.hidden td,.handsontable tr.hidden th{display:none}.ht_clone_bottom,.ht_clone_inline_start,.ht_clone_top,.ht_master{overflow:hidden}.ht_master .wtHolder{overflow:auto}.handsontable .ht_clone_inline_start table.htCore>thead,.handsontable .ht_master table.htCore>tbody>tr>th,.handsontable .ht_master table.htCore>thead{visibility:hidden}.ht_clone_bottom .wtHolder,.ht_clone_inline_start .wtHolder,.ht_clone_top .wtHolder{overflow:hidden}.handsontable{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:13px;font-weight:400;touch-action:manipulation}.handsontable a{color:#104acc}.handsontable.htAutoSize{left:-99000px;position:absolute;top:-99000px;visibility:hidden}.handsontable td.htInvalid{background-color:#ffbeba!important}.handsontable td.htNoWrap{white-space:nowrap}.handsontable td.invisibleSelection,.handsontable th.invisibleSelection{outline:none}.handsontable td.invisibleSelection::selection,.handsontable th.invisibleSelection::selection{background:hsla(0,0%,100%,0)}.hot-display-license-info{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:10px;font-weight:400;padding:5px 0 3px;text-align:left}.hot-display-license-info a{color:#104acc;font-size:10px}.handsontable .htFocusCatcher{border:0;height:0;margin:0;opacity:0;padding:0;position:absolute;width:0;z-index:-1}.handsontable .manualColumnResizer{cursor:col-resize;height:25px;position:absolute;top:0;width:5px;z-index:210}.handsontable .manualRowResizer{cursor:row-resize;height:5px;left:0;position:absolute;width:50px;z-index:210}.handsontable .manualColumnResizer.active,.handsontable .manualColumnResizer:hover,.handsontable .manualRowResizer.active,.handsontable .manualRowResizer:hover{background-color:#34a9db}.handsontable .manualColumnResizerGuide{background-color:#34a9db;border-left:none;border-right:1px dashed #777;display:none;margin-left:5px;margin-right:unset;position:absolute;right:unset;top:0;width:0}[dir=rtl].handsontable .manualColumnResizerGuide{border-left:1px dashed #777;border-right:none;left:unset;margin-left:unset;margin-right:5px}.handsontable .manualRowResizerGuide{background-color:#34a9db;border-bottom:1px dashed #777;bottom:0;display:none;height:0;left:0;margin-top:5px;position:absolute}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block;z-index:209}.handsontable td.area,.handsontable td.area-1,.handsontable td.area-2,.handsontable td.area-3,.handsontable td.area-4,.handsontable td.area-5,.handsontable td.area-6,.handsontable td.area-7{position:relative}.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{background:#005eff;bottom:0;content:"";left:0;position:absolute;right:0;top:0}.handsontable td.area:before{opacity:.1}.handsontable td.area-1:before{opacity:.2}.handsontable td.area-2:before{opacity:.27}.handsontable td.area-3:before{opacity:.35}.handsontable td.area-4:before{opacity:.41}.handsontable td.area-5:before{opacity:.47}.handsontable td.area-6:before{opacity:.54}.handsontable td.area-7:before{opacity:.58}.handsontable tbody th.current,.handsontable thead th.current{box-shadow:inset 0 0 0 2px #4b89ff}.handsontable tbody th.ht__highlight,.handsontable thead th.ht__highlight{background-color:#dcdcdc}.handsontable tbody th.ht__active_highlight,.handsontable thead th.ht__active_highlight{background-color:#8eb0e7;color:#000}.handsontableInput{background-color:#fff;border:none;border-radius:0;box-shadow:inset 0 0 0 2px #5292f7;box-sizing:border-box!important;color:#000;display:block;font-family:inherit;font-size:inherit;line-height:21px;margin:0;outline-width:0;padding:1px 5px 0;resize:none}.handsontableInput:focus{outline:none}.handsontableInputHolder{left:0;position:absolute;top:0}.htSelectEditor{position:absolute;select{-webkit-appearance:menulist-button!important;border:2px solid #4b89ff;box-sizing:border-box!important;height:100%;width:100%}}.htSelectEditor select:focus{outline:none}.htSelectEditor .htAutocompleteArrow{display:none}.handsontable .htDimmed{color:#777}.handsontable .htSubmenu{position:relative}.handsontable .htSubmenu :after{color:#777;content:"▶";font-size:9px;position:absolute;right:5px}[dir=rtl].handsontable .htSubmenu :after{content:""}[dir=rtl].handsontable .htSubmenu :before{color:#777;content:"◀";font-size:9px;left:5px;position:absolute}.handsontable .htLeft{text-align:left}.handsontable .htCenter{text-align:center}.handsontable .htRight{text-align:right}.handsontable .htJustify{text-align:justify}.handsontable .htTop{vertical-align:top}.handsontable .htMiddle{vertical-align:middle}.handsontable .htBottom{vertical-align:bottom}.handsontable .htPlaceholder{color:#999}.handsontable.listbox{margin:0}.handsontable.listbox .ht_master table{background:#fff;border:1px solid #ccc;border-collapse:separate}.handsontable.listbox td,.handsontable.listbox th,.handsontable.listbox tr:first-child td,.handsontable.listbox tr:first-child th,.handsontable.listbox tr:last-child th{border-color:transparent!important}.handsontable.listbox td,.handsontable.listbox th{text-overflow:ellipsis;white-space:nowrap}.handsontable.listbox td.htDimmed{color:inherit;cursor:default;font-style:inherit}.handsontable.listbox .wtBorder{visibility:hidden}.handsontable.listbox tr td.current,.handsontable.listbox tr:hover td{background:#eee}.ht_editor_hidden{z-index:-1}.ht_editor_visible{z-index:200}.handsontable td.htSearchResult{background:#fcedd9;color:#583707}.handsontable.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch}.handsontable.mobile .handsontableInput:focus{-webkit-appearance:none;-webkit-box-shadow:inset 0 0 0 2px #5292f7;-moz-box-shadow:inset 0 0 0 2px #5292f7;box-shadow:inset 0 0 0 2px #5292f7}.handsontable .bottomSelectionHandle,.handsontable .bottomSelectionHandle-HitArea,.handsontable .topSelectionHandle,.handsontable .topSelectionHandle-HitArea{left:-10000px;right:unset;top:-10000px;z-index:9999}[dir=rtl].handsontable .bottomSelectionHandle,[dir=rtl].handsontable .bottomSelectionHandle-HitArea,[dir=rtl].handsontable .topSelectionHandle,[dir=rtl].handsontable .topSelectionHandle-HitArea{left:unset;right:-10000px}.handsontable.hide-tween{-webkit-animation:opacity-hide .3s;animation:opacity-hide .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable.show-tween{-webkit-animation:opacity-show .3s;animation:opacity-show .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable .htAutocompleteArrow{color:#bbb;cursor:default;float:right;font-size:10px;text-align:center;width:16px}[dir=rtl].handsontable .htAutocompleteArrow{float:left}.handsontable td.htInvalid .htAutocompleteArrow{color:#555}.handsontable td.htInvalid .htAutocompleteArrow:hover{color:#1a1a1a}.handsontable td .htAutocompleteArrow:hover{color:#777}.handsontable td.area .htAutocompleteArrow{color:#d3d3d3}.handsontable .htCheckboxRendererInput{display:inline-block}.handsontable .htCheckboxRendererInput.noValue{opacity:.5}.handsontable .htCheckboxRendererLabel{cursor:pointer;display:inline-block;font-size:inherit;vertical-align:middle}.handsontable .htCheckboxRendererLabel.fullWidth{width:100%}.handsontable .collapsibleIndicator{background:#eee;border:1px solid #a6a6a6;border-radius:10px;-webkit-box-shadow:0 0 0 6px #eee;-moz-box-shadow:0 0 0 6px #eee;box-shadow:0 0 0 3px #eee;color:#222;cursor:pointer;font-size:10px;height:10px;left:unset;line-height:8px;position:absolute;right:5px;text-align:center;top:50%;transform:translateY(-50%);width:10px}[dir=rtl].handsontable .collapsibleIndicator{left:5px;right:unset}.handsontable[dir=ltr] thead th:has(.collapsibleIndicator) div.htRight span.colHeader{margin-right:20px}.handsontable[dir=rtl] thead th:has(.collapsibleIndicator) div.htLeft span.colHeader{margin-left:20px}.handsontable .columnSorting{position:relative}.handsontable[dir=ltr] div.htRight span[class*=ascending],.handsontable[dir=ltr] div.htRight span[class*=descending]{margin-left:-10px;margin-right:10px}.handsontable[dir=rtl] div.htLeft span[class*=ascending],.handsontable[dir=rtl] div.htLeft span[class*=descending]{margin-left:10px;margin-right:-10px}.handsontable[dir=ltr] div.htRight span[class*=ascending]:only-child,.handsontable[dir=ltr] div.htRight span[class*=descending]:only-child{margin-left:-15px;margin-right:15px}.handsontable[dir=rtl] div.htLeft span[class*=ascending]:only-child,.handsontable[dir=rtl] div.htLeft span[class*=descending]:only-child{margin-left:15px;margin-right:-15px}.handsontable .columnSorting.sortAction:hover{cursor:pointer;text-decoration:underline}.handsontable span.colHeader.columnSorting:before{background-position-x:right;background-repeat:no-repeat;background-size:contain;content:"";height:10px;left:unset;margin-top:-6px;padding-left:8px;padding-right:0;position:absolute;right:-9px;top:50%;width:5px}[dir=rtl].handsontable span.colHeader.columnSorting:before{background-position-x:left;left:-9px;padding-left:0;padding-right:8px;right:unset}.handsontable span.colHeader.columnSorting.ascending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFNJREFUeAHtzjkSgCAUBNHPgsoy97+ulGXRqJE5L+xkxoYt2UdsLb5bqFINz+aLuuLn5rIu2RkO3fZpWENimNgiw6iBYRTPMLJjGFxQZ1hxxb/xBI1qC8k39CdKAAAAAElFTkSuQmCC)}.handsontable span.colHeader.columnSorting.descending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFJJREFUeAHtzjkSgCAQRNFmQYUZ7n9dKUvru0TmvPAn3br0QfgdZ5xx6x+rQn23GqTYnq1FDcnuzZIO2WmedVqIRVxgGKEyjNgYRjKGkZ1hFIZ3I70LyM0VtU8AAAAASUVORK5CYII=)}.htGhostTable .htCore span.colHeader.columnSorting:not(.indicatorDisabled):before{content:"*";display:inline-block;padding-right:20px;position:relative}.handsontable .htCommentCell{position:relative}.handsontable .htCommentCell:after{border-left:6px solid transparent;border-right:none;border-top:6px solid #000;content:"";left:unset;position:absolute;right:0;top:0}[dir=rtl].handsontable .htCommentCell:after{border-left:none;border-right:6px solid transparent;left:0;right:unset}.htCommentsContainer .htComments{display:none;position:absolute;z-index:1059}.htCommentsContainer .htCommentTextArea{-webkit-appearance:none;background-color:#fff;border:none;border-left:3px solid #ccc;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:12px;height:90px;outline:0!important;padding:5px;width:215px}[dir=rtl].htCommentsContainer .htCommentTextArea{border-left:none;border-right:3px solid #ccc}.htCommentsContainer .htCommentTextArea:focus{border-left:3px solid #5292f7;border-right:none;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239),inset 0 0 0 1px #5292f7}[dir=rtl].htCommentsContainer .htCommentTextArea:focus{border-left:none;border-right:3px solid #5292f7}
32
32
  /*!
33
33
  * Handsontable ContextMenu