handsontable 16.1.1-next-799e8f4-20250923 → 16.1.1

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.
Files changed (51) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/base.js +2 -2
  3. package/base.mjs +2 -2
  4. package/dist/handsontable.css +2 -2
  5. package/dist/handsontable.full.css +2 -2
  6. package/dist/handsontable.full.js +82 -25
  7. package/dist/handsontable.full.min.css +2 -2
  8. package/dist/handsontable.full.min.js +160 -160
  9. package/dist/handsontable.js +82 -25
  10. package/dist/handsontable.min.css +2 -2
  11. package/dist/handsontable.min.js +26 -26
  12. package/dist/languages/all.min.js +1 -1
  13. package/dist/languages/ar-AR.min.js +1 -1
  14. package/dist/languages/cs-CZ.min.js +1 -1
  15. package/dist/languages/de-CH.min.js +1 -1
  16. package/dist/languages/de-DE.min.js +1 -1
  17. package/dist/languages/en-US.min.js +1 -1
  18. package/dist/languages/es-MX.min.js +1 -1
  19. package/dist/languages/fa-IR.min.js +1 -1
  20. package/dist/languages/fr-FR.min.js +1 -1
  21. package/dist/languages/hr-HR.min.js +1 -1
  22. package/dist/languages/it-IT.min.js +1 -1
  23. package/dist/languages/ja-JP.min.js +1 -1
  24. package/dist/languages/ko-KR.min.js +1 -1
  25. package/dist/languages/lv-LV.min.js +1 -1
  26. package/dist/languages/nb-NO.min.js +1 -1
  27. package/dist/languages/nl-NL.min.js +1 -1
  28. package/dist/languages/pl-PL.min.js +1 -1
  29. package/dist/languages/pt-BR.min.js +1 -1
  30. package/dist/languages/ru-RU.min.js +1 -1
  31. package/dist/languages/sr-SP.min.js +1 -1
  32. package/dist/languages/zh-CN.min.js +1 -1
  33. package/dist/languages/zh-TW.min.js +1 -1
  34. package/helpers/mixed.js +1 -1
  35. package/helpers/mixed.mjs +1 -1
  36. package/package.json +1 -1
  37. package/plugins/columnSummary/columnSummary.d.ts +2 -2
  38. package/plugins/columnSummary/columnSummary.js +44 -10
  39. package/plugins/columnSummary/columnSummary.mjs +44 -10
  40. package/plugins/columnSummary/endpoints.js +2 -10
  41. package/plugins/columnSummary/endpoints.mjs +2 -10
  42. package/plugins/columnSummary/utils.js +31 -0
  43. package/plugins/columnSummary/utils.mjs +30 -0
  44. package/styles/handsontable.css +2 -2
  45. package/styles/handsontable.min.css +2 -2
  46. package/styles/ht-theme-classic.css +2 -2
  47. package/styles/ht-theme-classic.min.css +2 -2
  48. package/styles/ht-theme-horizon.css +2 -2
  49. package/styles/ht-theme-horizon.min.css +2 -2
  50. package/styles/ht-theme-main.css +2 -2
  51. package/styles/ht-theme-main.min.css +2 -2
package/CHANGELOG.md CHANGED
@@ -56,6 +56,7 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
56
56
  ### Deprecated
57
57
  - Deprecated the legacy style (to be removed in version `17.0.0`). [#11790](https://github.com/handsontable/handsontable/pull/11790)
58
58
  - Deprecated the PersistentState plugin (to be removed in version `17.0.0`). [#11835](https://github.com/handsontable/handsontable/pull/11835)
59
+ - Deprecated the `@handsontable/vue` wrapper. [#11839](https://github.com/handsontable/handsontable/pull/11839)
59
60
 
60
61
  ## [16.0.1] - 2025-07-10
61
62
 
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 = "23/09/2025 08:39:47";
49
- Handsontable.version = "16.1.1-next-799e8f4-20250923";
48
+ Handsontable.buildDate = "23/09/2025 14:16:52";
49
+ Handsontable.version = "16.1.1";
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 = "23/09/2025 08:39:53";
39
- Handsontable.version = "16.1.1-next-799e8f4-20250923";
38
+ Handsontable.buildDate = "23/09/2025 14:16:56";
39
+ Handsontable.version = "16.1.1";
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.1-next-799e8f4-20250923
30
- * Release date: 23/09/2025 (built at 23/09/2025 08:40:16)
29
+ * Version: 16.1.1
30
+ * Release date: 23/09/2025 (built at 23/09/2025 14:17:09)
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.1-next-799e8f4-20250923
30
- * Release date: 23/09/2025 (built at 23/09/2025 08:40:16)
29
+ * Version: 16.1.1
30
+ * Release date: 23/09/2025 (built at 23/09/2025 14:17:09)
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.1-next-799e8f4-20250923
29
- * Release date: 23/09/2025 (built at 23/09/2025 08:39:58)
28
+ * Version: 16.1.1
29
+ * Release date: 23/09/2025 (built at 23/09/2025 14:16:58)
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 = "23/09/2025 08:39:58";
42881
- Handsontable.version = "16.1.1-next-799e8f4-20250923";
42880
+ Handsontable.buildDate = "23/09/2025 14:16:58";
42881
+ Handsontable.version = "16.1.1";
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.1-next-799e8f4-20250923";
54791
+ const hotVersion = "16.1.1";
54792
54792
  let keyValidityDate;
54793
54793
  let consoleMessageState = 'invalid';
54794
54794
  let domMessageState = 'invalid';
@@ -121418,37 +121418,49 @@ class ColumnSummary extends _base.BasePlugin {
121418
121418
  }
121419
121419
  return _assertClassBrand(_ColumnSummary_brand, _this, _onAfterUpdateSettings).call(_this, ...args);
121420
121420
  });
121421
+ this.addHook('afterLoadData', function () {
121422
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
121423
+ args[_key4] = arguments[_key4];
121424
+ }
121425
+ return _assertClassBrand(_ColumnSummary_brand, _this, _onAfterLoadData).call(_this, ...args);
121426
+ });
121427
+ this.addHook('afterUpdateData', function () {
121428
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
121429
+ args[_key5] = arguments[_key5];
121430
+ }
121431
+ return _assertClassBrand(_ColumnSummary_brand, _this, _onAfterUpdateData).call(_this, ...args);
121432
+ });
121421
121433
  this.addHook('beforeCreateRow', (index, amount, source) => this.endpoints.resetSetupBeforeStructureAlteration('insert_row', index, amount, null, source)); // eslint-disable-line max-len
121422
121434
  this.addHook('beforeCreateCol', (index, amount, source) => this.endpoints.resetSetupBeforeStructureAlteration('insert_col', index, amount, null, source)); // eslint-disable-line max-len
121423
121435
  this.addHook('beforeRemoveRow', function () {
121424
- for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
121425
- args[_key4] = arguments[_key4];
121436
+ for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
121437
+ args[_key6] = arguments[_key6];
121426
121438
  }
121427
121439
  return _this.endpoints.resetSetupBeforeStructureAlteration('remove_row', ...args);
121428
121440
  });
121429
121441
  this.addHook('beforeRemoveCol', function () {
121430
- for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
121431
- args[_key5] = arguments[_key5];
121442
+ for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
121443
+ args[_key7] = arguments[_key7];
121432
121444
  }
121433
121445
  return _this.endpoints.resetSetupBeforeStructureAlteration('remove_col', ...args);
121434
121446
  });
121435
121447
  this.addHook('afterCreateRow', (index, amount, source) => this.endpoints.resetSetupAfterStructureAlteration('insert_row', index, amount, null, source)); // eslint-disable-line max-len
121436
121448
  this.addHook('afterCreateCol', (index, amount, source) => this.endpoints.resetSetupAfterStructureAlteration('insert_col', index, amount, null, source)); // eslint-disable-line max-len
121437
121449
  this.addHook('afterRemoveRow', function () {
121438
- for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
121439
- args[_key6] = arguments[_key6];
121450
+ for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
121451
+ args[_key8] = arguments[_key8];
121440
121452
  }
121441
121453
  return _this.endpoints.resetSetupAfterStructureAlteration('remove_row', ...args);
121442
121454
  });
121443
121455
  this.addHook('afterRemoveCol', function () {
121444
- for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
121445
- args[_key7] = arguments[_key7];
121456
+ for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
121457
+ args[_key9] = arguments[_key9];
121446
121458
  }
121447
121459
  return _this.endpoints.resetSetupAfterStructureAlteration('remove_col', ...args);
121448
121460
  });
121449
121461
  this.addHook('afterRowMove', function () {
121450
- for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
121451
- args[_key8] = arguments[_key8];
121462
+ for (var _len0 = arguments.length, args = new Array(_len0), _key0 = 0; _key0 < _len0; _key0++) {
121463
+ args[_key0] = arguments[_key0];
121452
121464
  }
121453
121465
  return _assertClassBrand(_ColumnSummary_brand, _this, _onAfterRowMove).call(_this, ...args);
121454
121466
  });
@@ -121735,6 +121747,28 @@ function _onAfterChange(changes, source) {
121735
121747
  this.endpoints.refreshChangedEndpoints(changes);
121736
121748
  }
121737
121749
  }
121750
+ /**
121751
+ * `afterLoadData` hook callback.
121752
+ *
121753
+ * @param {Array} data The updated data.
121754
+ * @param {boolean} firstRun `true` if called on initial load, `false` otherwise.
121755
+ */
121756
+ function _onAfterLoadData(data, firstRun) {
121757
+ if (!firstRun) {
121758
+ this.endpoints.refreshAllEndpoints();
121759
+ }
121760
+ }
121761
+ /**
121762
+ * `afterUpdateData` hook callback.
121763
+ *
121764
+ * @param {Array} data The updated data.
121765
+ * @param {boolean} firstRun `true` if called on initial load, `false` otherwise.
121766
+ */
121767
+ function _onAfterUpdateData(data, firstRun) {
121768
+ if (!firstRun) {
121769
+ this.endpoints.refreshAllEndpoints();
121770
+ }
121771
+ }
121738
121772
  /**
121739
121773
  * `beforeRowMove` hook callback.
121740
121774
  *
@@ -121764,6 +121798,7 @@ __webpack_require__(631);
121764
121798
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(510));
121765
121799
  var _array = __webpack_require__(501);
121766
121800
  var _console = __webpack_require__(518);
121801
+ var _utils = __webpack_require__(897);
121767
121802
  /**
121768
121803
  * Class used to make all endpoint-related operations.
121769
121804
  *
@@ -122258,16 +122293,7 @@ class Endpoints {
122258
122293
  cellMeta.className = 'columnSummaryResult';
122259
122294
  }
122260
122295
  }
122261
- if ((endpoint.roundFloat === true || Number.isInteger(endpoint.roundFloat)) && !isNaN(endpoint.result)) {
122262
- const roundFloatValue = endpoint.roundFloat;
122263
- let decimalPlacesCount = 0;
122264
-
122265
- // `toFixed` method accepts only values between 0 and 100
122266
- if (Number.isInteger(roundFloatValue)) {
122267
- decimalPlacesCount = Math.min(Math.max(0, roundFloatValue), 100);
122268
- }
122269
- endpoint.result = endpoint.result.toFixed(decimalPlacesCount);
122270
- }
122296
+ endpoint.result = (0, _utils.roundFloat)(endpoint.result, endpoint.roundFloat);
122271
122297
  if (render) {
122272
122298
  this.hot.setDataAtCell(visualEndpointRowIndex, endpoint.destinationColumn, endpoint.result, 'ColumnSummary.set');
122273
122299
  } else {
@@ -122297,6 +122323,7 @@ var _default = exports["default"] = Endpoints;
122297
122323
 
122298
122324
  exports.__esModule = true;
122299
122325
  exports.isNullishOrNaN = isNullishOrNaN;
122326
+ exports.roundFloat = roundFloat;
122300
122327
  /**
122301
122328
  * Returns `true` if the value is one of the type: `null`, `undefined` or `NaN`.
122302
122329
  *
@@ -122307,6 +122334,36 @@ function isNullishOrNaN(value) {
122307
122334
  return value === null || value === undefined || isNaN(value);
122308
122335
  }
122309
122336
 
122337
+ /**
122338
+ * Rounds a number to a specific number of decimal places.
122339
+ *
122340
+ * @param {number} value The value to round.
122341
+ * @param {number|boolean|string|undefined} [option] Either a number of decimal places to round to, a boolean or "auto".
122342
+ * @returns {string|number} The (possibly) rounded number as a string (for displaying the correct precision).
122343
+ */
122344
+ function roundFloat(value, option) {
122345
+ if (typeof value !== 'number') {
122346
+ return value;
122347
+ }
122348
+ const stringifyValue = number => number.toString();
122349
+ switch (typeof option) {
122350
+ case 'number':
122351
+ return stringifyValue(value.toFixed(Math.min(Math.max(0, option), 100)));
122352
+ case 'boolean':
122353
+ return option ? stringifyValue(Math.round(value)) : value;
122354
+ case 'string':
122355
+ if (option === 'auto') {
122356
+ const integerDigits = Math.round(value).toString().length;
122357
+
122358
+ // Make the entire number fit into 8 digits
122359
+ return stringifyValue(value.toFixed(8 - integerDigits));
122360
+ }
122361
+ return value;
122362
+ default:
122363
+ return value;
122364
+ }
122365
+ }
122366
+
122310
122367
  /***/ }),
122311
122368
  /* 898 */
122312
122369
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -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.1-next-799e8f4-20250923
30
- * Release date: 23/09/2025 (built at 23/09/2025 08:40:54)
29
+ * Version: 16.1.1
30
+ * Release date: 23/09/2025 (built at 23/09/2025 14:17:25)
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