handsontable 0.0.0-next-bb36dee-20241108 → 0.0.0-next-cf17948-20241113

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.

Potentially problematic release.


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

Files changed (41) hide show
  1. package/3rdparty/walkontable/src/table.js +3 -1
  2. package/3rdparty/walkontable/src/table.mjs +3 -1
  3. package/3rdparty/walkontable/src/utils/stylesHandler.js +23 -8
  4. package/3rdparty/walkontable/src/utils/stylesHandler.mjs +23 -8
  5. package/base.js +2 -2
  6. package/base.mjs +2 -2
  7. package/core/hooks/constants.js +1 -0
  8. package/core/hooks/constants.mjs +1 -0
  9. package/core/hooks/index.d.ts +1 -1
  10. package/core.d.ts +1 -1
  11. package/core.js +1 -1
  12. package/core.mjs +1 -1
  13. package/dataMap/metaManager/metaSchema.js +1 -1
  14. package/dataMap/metaManager/metaSchema.mjs +1 -1
  15. package/dist/handsontable.css +2 -2
  16. package/dist/handsontable.full.css +2 -2
  17. package/dist/handsontable.full.js +58 -27
  18. package/dist/handsontable.full.min.css +2 -2
  19. package/dist/handsontable.full.min.js +6 -6
  20. package/dist/handsontable.js +58 -27
  21. package/dist/handsontable.min.css +2 -2
  22. package/dist/handsontable.min.js +13 -13
  23. package/editors/dateEditor/dateEditor.js +5 -3
  24. package/editors/dateEditor/dateEditor.mjs +5 -3
  25. package/editors/handsontableEditor/handsontableEditor.js +4 -2
  26. package/editors/handsontableEditor/handsontableEditor.mjs +4 -2
  27. package/helpers/mixed.js +1 -1
  28. package/helpers/mixed.mjs +1 -1
  29. package/package.json +1 -1
  30. package/plugins/comments/comments.js +6 -1
  31. package/plugins/comments/comments.mjs +6 -1
  32. package/plugins/contextMenu/menu/menu.js +5 -3
  33. package/plugins/contextMenu/menu/menu.mjs +5 -3
  34. package/plugins/filters/ui/multipleSelect.js +4 -2
  35. package/plugins/filters/ui/multipleSelect.mjs +4 -2
  36. package/styles/handsontable.css +137 -19
  37. package/styles/handsontable.min.css +3 -3
  38. package/styles/ht-theme-horizon.css +59 -39
  39. package/styles/ht-theme-horizon.min.css +3 -3
  40. package/styles/ht-theme-main.css +59 -39
  41. package/styles/ht-theme-main.min.css +3 -3
@@ -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-bb36dee-20241108
29
- * Release date: 17/10/2024 (built at 08/11/2024 12:47:12)
28
+ * Version: 0.0.0-next-cf17948-20241113
29
+ * Release date: 17/10/2024 (built at 13/11/2024 12:54:58)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -104,8 +104,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
104
104
  Handsontable.CellCoords = _src.CellCoords;
105
105
  Handsontable.CellRange = _src.CellRange;
106
106
  Handsontable.packageName = 'handsontable';
107
- Handsontable.buildDate = "08/11/2024 12:47:12";
108
- Handsontable.version = "0.0.0-next-bb36dee-20241108";
107
+ Handsontable.buildDate = "13/11/2024 12:54:58";
108
+ Handsontable.version = "0.0.0-next-cf17948-20241113";
109
109
  Handsontable.languages = {
110
110
  dictionaryKeys: _registry.dictionaryKeys,
111
111
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -4753,7 +4753,7 @@ function Core(rootElement, userSettings) {
4753
4753
  */
4754
4754
  this.useTheme = themeName => {
4755
4755
  this.view.getStylesHandler().useTheme(themeName);
4756
- this.runHooks('afterSetTheme', themeName);
4756
+ this.runHooks('afterSetTheme', themeName, !!firstRun);
4757
4757
  };
4758
4758
 
4759
4759
  /**
@@ -10071,7 +10071,7 @@ const domMessages = {
10071
10071
  function _injectProductInfo(key, element) {
10072
10072
  const hasValidType = !isEmpty(key);
10073
10073
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
10074
- const hotVersion = "0.0.0-next-bb36dee-20241108";
10074
+ const hotVersion = "0.0.0-next-cf17948-20241113";
10075
10075
  let keyValidityDate;
10076
10076
  let consoleMessageState = 'invalid';
10077
10077
  let domMessageState = 'invalid';
@@ -13779,6 +13779,7 @@ const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/req
13779
13779
  * @since 15.0.0
13780
13780
  * @event Hooks#afterSetTheme
13781
13781
  * @param {string|boolean|undefined} themeName The theme name.
13782
+ * @param {boolean} firstRun `true` if it's the initial setting of the theme, `false` otherwise.
13782
13783
  */
13783
13784
  'afterSetTheme',
13784
13785
  /**
@@ -23917,6 +23918,7 @@ class Table {
23917
23918
  const borderBoxSizing = this.wot.stylesHandler.areCellsBorderBox();
23918
23919
  const rowHeightFn = borderBoxSizing ? _element.outerHeight : _element.innerHeight;
23919
23920
  const borderCompensation = borderBoxSizing ? 0 : 1;
23921
+ const firstRowBorderCompensation = borderBoxSizing ? 1 : 0;
23920
23922
  let previousRowHeight;
23921
23923
  let rowCurrentHeight;
23922
23924
  let sourceRowIndex;
@@ -23932,12 +23934,13 @@ class Table {
23932
23934
  previousRowHeight = this.getRowHeight(sourceRowIndex);
23933
23935
  currentTr = this.getTrForRow(sourceRowIndex);
23934
23936
  rowHeader = currentTr.querySelector('th');
23937
+ const topBorderCompensation = sourceRowIndex === 0 ? firstRowBorderCompensation : 0;
23935
23938
  if (rowHeader) {
23936
23939
  rowCurrentHeight = rowHeightFn(rowHeader);
23937
23940
  } else {
23938
23941
  rowCurrentHeight = rowHeightFn(currentTr) - borderCompensation;
23939
23942
  }
23940
- if (!previousRowHeight && this.dataAccessObject.stylesHandler.getDefaultRowHeight() < rowCurrentHeight || previousRowHeight < rowCurrentHeight) {
23943
+ if (!previousRowHeight && this.dataAccessObject.stylesHandler.getDefaultRowHeight() < rowCurrentHeight - topBorderCompensation || previousRowHeight < rowCurrentHeight) {
23941
23944
  if (!borderBoxSizing) {
23942
23945
  rowCurrentHeight += 1;
23943
23946
  }
@@ -31792,7 +31795,9 @@ class StylesHandler {
31792
31795
  */
31793
31796
  constructor(domBindings) {
31794
31797
  /**
31795
- * Applies the necessary class names to the root element.
31798
+ * Calculates the row height based on the current theme and CSS variables.
31799
+ *
31800
+ * @returns {number|null} The calculated row height, or `null` if any required CSS variable is not found.
31796
31801
  */
31797
31802
  _classPrivateMethodInitSpec(this, _StylesHandler_brand);
31798
31803
  /**
@@ -31894,15 +31899,15 @@ class StylesHandler {
31894
31899
  if (_classPrivateFieldGet(_isClassicTheme, this)) {
31895
31900
  return CLASSIC_THEME_DEFAULT_HEIGHT;
31896
31901
  }
31897
- const cssVarRowHeightValue = this.getCSSVariableValue('row-height');
31898
- if (!cssVarRowHeightValue) {
31899
- (0, _console.warn)(`The "${_classPrivateFieldGet(_themeName, this)}" theme is enabled, but its stylesheets are missing. \
31902
+ const calculatedRowHeight = _assertClassBrand(_StylesHandler_brand, this, _calculateRowHeight).call(this);
31903
+ if (!calculatedRowHeight) {
31904
+ (0, _console.warn)(`The "${_classPrivateFieldGet(_themeName, this)}" theme is enabled, but its stylesheets are missing or not imported correctly. \
31900
31905
  Import the correct CSS files in order to use that theme.`);
31901
31906
  _classPrivateFieldSet(_isClassicTheme, this, true);
31902
31907
  this.useTheme();
31903
31908
  return CLASSIC_THEME_DEFAULT_HEIGHT;
31904
31909
  }
31905
- return cssVarRowHeightValue;
31910
+ return calculatedRowHeight;
31906
31911
  }
31907
31912
 
31908
31913
  /**
@@ -31956,6 +31961,18 @@ Import the correct CSS files in order to use that theme.`);
31956
31961
  }
31957
31962
  }
31958
31963
  exports.StylesHandler = StylesHandler;
31964
+ function _calculateRowHeight() {
31965
+ const lineHeightVarValue = this.getCSSVariableValue('line-height');
31966
+ const verticalPaddingVarValue = this.getCSSVariableValue('cell-vertical-padding');
31967
+ const bottomBorderWidth = Math.ceil(parseFloat(this.getStyleForTD('border-bottom-width')));
31968
+ if (lineHeightVarValue === null || verticalPaddingVarValue === null || isNaN(bottomBorderWidth)) {
31969
+ return null;
31970
+ }
31971
+ return lineHeightVarValue + 2 * verticalPaddingVarValue + bottomBorderWidth;
31972
+ }
31973
+ /**
31974
+ * Applies the necessary class names to the root element.
31975
+ */
31959
31976
  function _applyClassNames() {
31960
31977
  (0, _element.removeClass)(_classPrivateFieldGet(_rootElement, this), /ht-theme-.*/g);
31961
31978
  (0, _element.addClass)(_classPrivateFieldGet(_rootElement, this), _classPrivateFieldGet(_themeName, this));
@@ -31967,11 +31984,12 @@ function _cacheStylesheetValues() {
31967
31984
  if (!this.isClassicTheme()) {
31968
31985
  _classPrivateFieldSet(_rootComputedStyle, this, getComputedStyle(_classPrivateFieldGet(_rootElement, this)));
31969
31986
  }
31970
- const stylesForTD = _assertClassBrand(_StylesHandler_brand, this, _getStylesForTD).call(this, ['box-sizing']);
31987
+ const stylesForTD = _assertClassBrand(_StylesHandler_brand, this, _getStylesForTD).call(this, ['box-sizing', 'border-bottom-width']);
31971
31988
  _classPrivateFieldGet(_computedStyles, this).td = {
31972
31989
  ..._classPrivateFieldGet(_computedStyles, this).td,
31973
31990
  ...{
31974
- 'box-sizing': stylesForTD['box-sizing']
31991
+ 'box-sizing': stylesForTD['box-sizing'],
31992
+ 'border-bottom-width': stylesForTD['border-bottom-width']
31975
31993
  }
31976
31994
  };
31977
31995
  }
@@ -32018,7 +32036,7 @@ function _getParsedCSSValue(property) {
32018
32036
  if (_classPrivateFieldGet(_isClassicTheme, this)) {
32019
32037
  return null;
32020
32038
  }
32021
- const parsedValue = parseInt(_classPrivateFieldGet(_rootComputedStyle, this).getPropertyValue(property), 10);
32039
+ const parsedValue = Math.ceil(parseFloat(_classPrivateFieldGet(_rootComputedStyle, this).getPropertyValue(property)));
32022
32040
  return Number.isNaN(parsedValue) ? null : parsedValue;
32023
32041
  }
32024
32042
  /**
@@ -43941,7 +43959,7 @@ var _default = () => {
43941
43959
  /**
43942
43960
  * The `rowHeights` option sets rows' heights, in pixels.
43943
43961
  *
43944
- * 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.
43962
+ * 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).
43945
43963
  * You can change it to equal or greater than the defautl value, by setting the `rowHeights` option to one of the following:
43946
43964
  *
43947
43965
  * | Setting | Description | Example |
@@ -51400,8 +51418,10 @@ class HandsontableEditor extends _textEditor.TextEditor {
51400
51418
  this.htEditor.destroy();
51401
51419
  }
51402
51420
  });
51403
- this.hot.addHook('afterSetTheme', themeName => {
51404
- this.htEditor.useTheme(themeName);
51421
+ this.hot.addHook('afterSetTheme', (themeName, firstRun) => {
51422
+ if (!firstRun) {
51423
+ this.htEditor.useTheme(themeName);
51424
+ }
51405
51425
  });
51406
51426
  }
51407
51427
 
@@ -51617,9 +51637,11 @@ class DateEditor extends _textEditor.TextEditor {
51617
51637
  this.parentDestroyed = true;
51618
51638
  this.destroyElements();
51619
51639
  });
51620
- this.hot.addHook('afterSetTheme', themeName => {
51621
- (0, _element.removeClass)(this.datePicker, /ht-theme-.*/g);
51622
- (0, _element.addClass)(this.datePicker, themeName);
51640
+ this.hot.addHook('afterSetTheme', (themeName, firstRun) => {
51641
+ if (!firstRun) {
51642
+ (0, _element.removeClass)(this.datePicker, /ht-theme-.*/g);
51643
+ (0, _element.addClass)(this.datePicker, themeName);
51644
+ }
51623
51645
  });
51624
51646
  }
51625
51647
 
@@ -61121,7 +61143,12 @@ class Comments extends _base.BasePlugin {
61121
61143
  this.addHook('afterScroll', () => _assertClassBrand(_Comments_brand, this, _onAfterScroll).call(this));
61122
61144
  this.addHook('afterBeginEditing', () => this.hide());
61123
61145
  this.addHook('afterDocumentKeyDown', event => _assertClassBrand(_Comments_brand, this, _onAfterDocumentKeyDown).call(this, event));
61124
- this.addHook('afterSetTheme', () => _assertClassBrand(_Comments_brand, this, _updateEditorThemeClassName).call(this));
61146
+ this.addHook('afterSetTheme', function () {
61147
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
61148
+ args[_key2] = arguments[_key2];
61149
+ }
61150
+ return _assertClassBrand(_Comments_brand, _this, _updateEditorThemeClassName).call(_this, ...args);
61151
+ });
61125
61152
  _classPrivateFieldGet(_displaySwitch, this).addLocalHook('hide', () => this.hide());
61126
61153
  _classPrivateFieldGet(_displaySwitch, this).addLocalHook('show', (row, col) => this.showAtCell(row, col));
61127
61154
  this.registerShortcuts();
@@ -64270,9 +64297,11 @@ class Menu {
64270
64297
  return _this.parentMenu.runLocalHooks('afterSelectionChange', ...args);
64271
64298
  });
64272
64299
  }
64273
- this.hot.addHook('afterSetTheme', themeName => {
64274
- var _this$hotMenu;
64275
- (_this$hotMenu = this.hotMenu) === null || _this$hotMenu === void 0 || _this$hotMenu.useTheme(themeName);
64300
+ this.hot.addHook('afterSetTheme', (themeName, firstRun) => {
64301
+ if (!firstRun) {
64302
+ var _this$hotMenu;
64303
+ (_this$hotMenu = this.hotMenu) === null || _this$hotMenu === void 0 || _this$hotMenu.useTheme(themeName);
64304
+ }
64276
64305
  });
64277
64306
  }
64278
64307
 
@@ -73806,8 +73835,10 @@ class MultipleSelectUI extends _base.BaseUI {
73806
73835
  layoutDirection: this.hot.isRtl() ? 'rtl' : 'ltr'
73807
73836
  }));
73808
73837
  _classPrivateFieldGet(_itemsBox, this).init();
73809
- this.hot.addHook('afterSetTheme', () => {
73810
- _classPrivateFieldGet(_itemsBox, this).useTheme(this.hot.getCurrentThemeName());
73838
+ this.hot.addHook('afterSetTheme', (themeName, firstRun) => {
73839
+ if (!firstRun) {
73840
+ _classPrivateFieldGet(_itemsBox, this).useTheme(themeName);
73841
+ }
73811
73842
  });
73812
73843
  const shortcutManager = _classPrivateFieldGet(_itemsBox, this).getShortcutManager();
73813
73844
  const gridContext = shortcutManager.getContext('grid');
@@ -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-bb36dee-20241108
30
- * Release date: 17/10/2024 (built at 08/11/2024 12:48:05)
29
+ * Version: 0.0.0-next-cf17948-20241113
30
+ * Release date: 17/10/2024 (built at 13/11/2024 12:55:53)
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