handsontable 16.1.0 → 16.1.1-next-895fbb8-20250923

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.
package/CHANGELOG.md CHANGED
@@ -9,6 +9,13 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
9
9
 
10
10
  <!-- UNVERSIONED -->
11
11
 
12
+ ## [16.1.1] - 2025-09-23
13
+
14
+ ### Fixed
15
+ - Fixed row misalignment when setting `manualRowResize` on an instance with `autoRowSize` enabled. [#11849](https://github.com/handsontable/handsontable/pull/11849)
16
+ - Reverted the foreground color change for the "main" theme. [#11852](https://github.com/handsontable/handsontable/pull/11852)
17
+ - Fixed an error thrown when using autocomplete-typed cells with key/value sources alongside formulas. [#11853](https://github.com/handsontable/handsontable/pull/11853)
18
+
12
19
  ## [16.1.0] - 2025-09-15
13
20
 
14
21
  ### Added
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 = "15/09/2025 10:06:09";
49
- Handsontable.version = "16.1.0";
48
+ Handsontable.buildDate = "23/09/2025 08:54:12";
49
+ Handsontable.version = "16.1.1-next-895fbb8-20250923";
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 = "15/09/2025 10:06:12";
39
- Handsontable.version = "16.1.0";
38
+ Handsontable.buildDate = "23/09/2025 08:54:18";
39
+ Handsontable.version = "16.1.1-next-895fbb8-20250923";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys,
42
42
  getLanguageDictionary,
@@ -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: 16.1.0
30
- * Release date: 15/09/2025 (built at 15/09/2025 10:06:24)
29
+ * Version: 16.1.1-next-895fbb8-20250923
30
+ * Release date: 23/09/2025 (built at 23/09/2025 08:54:42)
31
31
  */
32
32
  /**
33
33
  * Fix for bootstrap styles
@@ -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: 16.1.0
30
- * Release date: 15/09/2025 (built at 15/09/2025 10:06:24)
29
+ * Version: 16.1.1-next-895fbb8-20250923
30
+ * Release date: 23/09/2025 (built at 23/09/2025 08:54:42)
31
31
  */
32
32
  /**
33
33
  * 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: 16.1.0
29
- * Release date: 15/09/2025 (built at 15/09/2025 10:06:15)
28
+ * Version: 16.1.1-next-895fbb8-20250923
29
+ * Release date: 23/09/2025 (built at 23/09/2025 08:54:23)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -42877,8 +42877,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
42877
42877
  Handsontable.CellCoords = _src.CellCoords;
42878
42878
  Handsontable.CellRange = _src.CellRange;
42879
42879
  Handsontable.packageName = 'handsontable';
42880
- Handsontable.buildDate = "15/09/2025 10:06:15";
42881
- Handsontable.version = "16.1.0";
42880
+ Handsontable.buildDate = "23/09/2025 08:54:23";
42881
+ Handsontable.version = "16.1.1-next-895fbb8-20250923";
42882
42882
  Handsontable.languages = {
42883
42883
  dictionaryKeys: _registry.dictionaryKeys,
42884
42884
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -54788,7 +54788,7 @@ const domMessages = {
54788
54788
  function _injectProductInfo(key, element) {
54789
54789
  const hasValidType = !isEmpty(key);
54790
54790
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
54791
- const hotVersion = "16.1.0";
54791
+ const hotVersion = "16.1.1-next-895fbb8-20250923";
54792
54792
  let keyValidityDate;
54793
54793
  let consoleMessageState = 'invalid';
54794
54794
  let domMessageState = 'invalid';
@@ -54796,7 +54796,7 @@ function _injectProductInfo(key, element) {
54796
54796
  const schemaValidity = _checkKeySchema(key);
54797
54797
  if (hasValidType || isNonCommercial || schemaValidity) {
54798
54798
  if (schemaValidity) {
54799
- const releaseDate = (0, _moment.default)("15/09/2025", 'DD/MM/YYYY');
54799
+ const releaseDate = (0, _moment.default)("23/09/2025", 'DD/MM/YYYY');
54800
54800
  const releaseDays = Math.floor(releaseDate.toDate().getTime() / 8.64e7);
54801
54801
  const keyValidityDays = _extractTime(key);
54802
54802
  keyValidityDate = (0, _moment.default)((keyValidityDays + 1) * 8.64e7, 'x').format('MMMM DD, YYYY');
@@ -136699,6 +136699,7 @@ var _base = __webpack_require__(865);
136699
136699
  var _staticRegister = __webpack_require__(527);
136700
136700
  var _console = __webpack_require__(518);
136701
136701
  var _number = __webpack_require__(539);
136702
+ var _object = __webpack_require__(504);
136702
136703
  var _mixed = __webpack_require__(358);
136703
136704
  var _register = __webpack_require__(1014);
136704
136705
  var _utils = __webpack_require__(1016);
@@ -136886,7 +136887,7 @@ class Formulas extends _base.BasePlugin {
136886
136887
 
136887
136888
  // Useful for disabling -> enabling the plugin using `updateSettings` or the API.
136888
136889
  if (this.sheetName !== null && !this.engine.doesSheetExist(this.sheetName)) {
136889
- const newSheetName = this.addSheet(this.sheetName, this.hot.getSourceDataArray());
136890
+ const newSheetName = this.addSheet(this.sheetName, _assertClassBrand(_Formulas_brand, this, _getProcessedSourceDataArray).call(this));
136890
136891
  if (newSheetName !== false) {
136891
136892
  _assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, newSheetName);
136892
136893
  }
@@ -137119,7 +137120,7 @@ class Formulas extends _base.BasePlugin {
137119
137120
  if (sheetName && this.engine.doesSheetExist(sheetName)) {
137120
137121
  this.switchSheet(this.sheetName);
137121
137122
  } else {
137122
- const newSheetName = this.addSheet(sheetName !== null && sheetName !== void 0 ? sheetName : undefined, this.hot.getSourceDataArray());
137123
+ const newSheetName = this.addSheet(sheetName !== null && sheetName !== void 0 ? sheetName : undefined, _assertClassBrand(_Formulas_brand, this, _getProcessedSourceDataArray).call(this));
137123
137124
  _assertClassBrand(_Formulas_brand, this, _updateSheetNameAndSheetId).call(this, newSheetName);
137124
137125
  }
137125
137126
  }
@@ -137344,13 +137345,13 @@ class Formulas extends _base.BasePlugin {
137344
137345
  }
137345
137346
 
137346
137347
  /**
137347
- * The hook allows to translate the formula value to calculated value before it goes to the
137348
- * validator function.
137348
+ * Get the value to be passed to the formula engine.
137349
+ * If the value is an object, utilize the valueGetter for that cell, otherwise return the value as is.
137349
137350
  *
137350
- * @param {*} value The cell value to validate.
137351
- * @param {number} visualRow The visual row index.
137352
- * @param {number|string} prop The visual column index or property name of the column.
137353
- * @returns {*} Returns value to validate.
137351
+ * @param {number} row The physical row index.
137352
+ * @param {number} column The physical column index.
137353
+ * @param {*} value The value to be passed to the formula engine.
137354
+ * @returns {*} The value to be displayed in the cell.
137354
137355
  */
137355
137356
  }
137356
137357
  exports.Formulas = Formulas;
@@ -137358,6 +137359,44 @@ function _updateSheetNameAndSheetId(sheetName) {
137358
137359
  this.sheetName = sheetName;
137359
137360
  this.sheetId = this.engine.getSheetId(this.sheetName);
137360
137361
  }
137362
+ function _getValueGetterValue(row, column, value) {
137363
+ if ((0, _object.isObject)(value) && value !== null) {
137364
+ const visualRow = this.hot.toVisualRow(row);
137365
+ const visualColumn = this.hot.toVisualColumn(column);
137366
+ const valueGetter = this.hot.getCellMeta(visualRow, visualColumn).valueGetter;
137367
+ if (valueGetter) {
137368
+ return valueGetter.call(this.hot, value);
137369
+ }
137370
+ return value.toString();
137371
+ }
137372
+ return value;
137373
+ }
137374
+ /**
137375
+ * Get the source data array to be passed to the formula engine.
137376
+ * If the value is an object, utilize the valueGetter for that cell, otherwise return the value as is.
137377
+ *
137378
+ * @param {number} [row] The starting visual row index.
137379
+ * @param {number} [column] The starting visual column index.
137380
+ * @param {number} [row2] The ending visual row index.
137381
+ * @param {number} [column2] The ending visual column index.
137382
+ * @returns {Array} The source data array to be passed to the formula engine.
137383
+ */
137384
+ function _getProcessedSourceDataArray(row, column, row2, column2) {
137385
+ return this.hot.getSourceDataArray(row, column, row2, column2).map((rowObject, rowIndex) => {
137386
+ return rowObject.map((value, columnIndex) => {
137387
+ return _assertClassBrand(_Formulas_brand, this, _getValueGetterValue).call(this, rowIndex, columnIndex, value);
137388
+ });
137389
+ });
137390
+ }
137391
+ /**
137392
+ * The hook allows to translate the formula value to calculated value before it goes to the
137393
+ * validator function.
137394
+ *
137395
+ * @param {*} value The cell value to validate.
137396
+ * @param {number} visualRow The visual row index.
137397
+ * @param {number|string} prop The visual column index or property name of the column.
137398
+ * @returns {*} Returns value to validate.
137399
+ */
137361
137400
  function _onBeforeValidate(value, visualRow, prop) {
137362
137401
  const visualColumn = this.hot.propToCol(prop);
137363
137402
  if (this.isFormulaCellType(visualRow, visualColumn)) {
@@ -137489,7 +137528,7 @@ function _onAfterCellMetaReset() {
137489
137528
  this.switchSheet(this.sheetName);
137490
137529
  return;
137491
137530
  }
137492
- const sourceDataArray = this.hot.getSourceDataArray();
137531
+ const sourceDataArray = _assertClassBrand(_Formulas_brand, this, _getProcessedSourceDataArray).call(this);
137493
137532
  sourceDataArray.forEach((rowData, rowIndex) => {
137494
137533
  rowData.forEach((cellValue, columnIndex) => {
137495
137534
  const cellMeta = this.hot.getCellMeta(rowIndex, columnIndex, {
@@ -137532,7 +137571,7 @@ function _onAfterLoadData(sourceData, initialLoad) {
137532
137571
  return;
137533
137572
  }
137534
137573
  if (!_classPrivateFieldGet(_hotWasInitializedWithEmptyData, this)) {
137535
- const sourceDataArray = this.hot.getSourceDataArray();
137574
+ const sourceDataArray = _assertClassBrand(_Formulas_brand, this, _getProcessedSourceDataArray).call(this);
137536
137575
  if (this.engine.isItPossibleToReplaceSheetContent(this.sheetId, sourceDataArray)) {
137537
137576
  _classPrivateFieldSet(_internalOperationPending, this, true);
137538
137577
  const dependentCells = this.engine.setSheetContent(this.sheetId, sourceDataArray);
@@ -137644,6 +137683,7 @@ function _onAfterSetDataAtCell(changes, source) {
137644
137683
  col: this.columnAxisSyncer.getHfIndexFromVisualIndex(visualColumn),
137645
137684
  sheet: this.sheetId
137646
137685
  };
137686
+ newValue = _assertClassBrand(_Formulas_brand, this, _getValueGetterValue).call(this, physicalRow, physicalColumn, newValue);
137647
137687
  if (physicalRow !== null && physicalColumn !== null) {
137648
137688
  this.syncChangeWithEngine(visualRow, visualColumn, newValue);
137649
137689
  } else {
@@ -137853,7 +137893,7 @@ function _onAfterRemoveCol(col, amount, physicalColumns, source) {
137853
137893
  function _onAfterDetachChild(parent, element, finalElementRowIndex) {
137854
137894
  var _element$__children;
137855
137895
  _classPrivateFieldSet(_internalOperationPending, this, true);
137856
- const rowsData = this.hot.getSourceDataArray(finalElementRowIndex, 0, finalElementRowIndex + (((_element$__children = element.__children) === null || _element$__children === void 0 ? void 0 : _element$__children.length) || 0), this.hot.countSourceCols());
137896
+ const rowsData = _assertClassBrand(_Formulas_brand, this, _getProcessedSourceDataArray).call(this, finalElementRowIndex, 0, finalElementRowIndex + (((_element$__children = element.__children) === null || _element$__children === void 0 ? void 0 : _element$__children.length) || 0), this.hot.countSourceCols());
137857
137897
  _classPrivateFieldSet(_internalOperationPending, this, false);
137858
137898
  rowsData.forEach((row, relativeRowIndex) => {
137859
137899
  row.forEach((value, colIndex) => {
@@ -143858,7 +143898,12 @@ function _onModifyRowHeight(height, row) {
143858
143898
  const physicalRow = this.hot.toPhysicalRow(row);
143859
143899
  const rowHeight = _classPrivateFieldGet(_rowHeightsMap, this).getValueAtIndex(physicalRow);
143860
143900
  if (this.hot.getSettings()[PLUGIN_KEY] && rowHeight) {
143861
- newHeight = rowHeight;
143901
+ var _this$hot$getPlugin;
143902
+ if ((_this$hot$getPlugin = this.hot.getPlugin('autoRowSize')) !== null && _this$hot$getPlugin !== void 0 && _this$hot$getPlugin.isEnabled()) {
143903
+ newHeight = Math.max(rowHeight, newHeight !== null && newHeight !== void 0 ? newHeight : 0);
143904
+ } else {
143905
+ newHeight = rowHeight;
143906
+ }
143862
143907
  }
143863
143908
  }
143864
143909
  return newHeight;
@@ -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: 16.1.0
30
- * Release date: 15/09/2025 (built at 15/09/2025 10:06:39)
29
+ * Version: 16.1.1-next-895fbb8-20250923
30
+ * Release date: 23/09/2025 (built at 23/09/2025 08:55:22)
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 .hide{display:none}.handsontable .relative{position:relative}.handsontable .wtHider{position:relative;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 .ht_clone_bottom_inline_start_corner td:first-of-type,.handsontable .ht_clone_inline_start td:first-of-type,.handsontable .ht_clone_top_inline_start_corner td:first-of-type,.handsontable th:first-child,.handsontable.ht-wrapper:not(.htFirstDatasetColumnNotRendered) td:first-of-type{border-left:1px solid #ccc}[dir=rtl].handsontable th:first-child,[dir=rtl].handsontable.ht-wrapper:not(.htFirstDatasetColumnNotRendered) td:first-of-type{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:first-child,.handsontable .wtBorder:nth-child(3){z-index:2}.handsontable .wtBorder:nth-child(2),.handsontable .wtBorder:nth-child(4){z-index:1}.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;position:relative;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}.ht-root-wrapper .htFocusCatcher{border:0;height:0;margin:0;opacity:0;padding:0;position:absolute;width:0;z-index:-1}.handsontable .htTextEllipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.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{border:1px solid #ccc;margin:0}.handsontable.listbox.autocompleteEditor,.handsontable.listbox.dropdownEditor{border-width:0}.handsontable.listbox .ht_master table{background:#fff;border-collapse:separate}.handsontable.listbox.autocompleteEditor .ht_master table,.handsontable.listbox.dropdownEditor .ht_master table{border:1px solid #ccc}.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.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.htGhostTable table thead th{border-bottom-width:0}.handsontable.htGhostTable table tbody tr td,.handsontable.htGhostTable table tbody tr th{border-top-width:0}.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